疑似リストの結合
すごいH本の7.4節に出てくる ^++
函數の動作が良く判らないので書き下してみる.
^++
の定義は以下の通り.
infixr 5 ^++
(^++) :: List a -> List a -> List amzn
Empty ^++ ys = ys
(x :-: xs) ^++ ys = x :-: (xs ^++ ys)
實際の疑似リストで書き下してみる.
(3 :-: 4 :-: 5 :-: Empty) ^++ (6 :-: 7 :-: Empty)
= 3 :-: ((4 :-: 5 :-: Empty) ^++ (6 :-: 7 :-: Empty))
= 3 :-: (4 :-: ((5 :-: Empty) ^++ (6 :-: 7 :-: Empty)))
= 3 :-: (4 :-: (5 :-: ((Empty) ^++ (6 :-: 7 :-: Empty))))
= 3 :-: (4 :-: (5 :-: (6 :-: 7 :-: Empty)))
= 3 :-: 4 :-: 5 :-: 6 :-: 7 :-: Empty
因みに++函數の定義をHoogleで調べると以下の通りだつた.
(++) :: [a] -> [a] -> [a]
(++) [] ys = ys
(++) (x:xs) ys = x : xs ++ ys
晩御飯
- 鮟鱇鍋の出汁で雑炊