練習問題

入門Haskell―はじめて学ぶ関数型言語」 p.73 より。
①は面倒なだけなのでパス。

②foldr の定義を書きなさい。

foldr は後ろから引数の関数を適用するんだからこうだろう

 myFoldr f a x:[]   = f x a
 myFoldr f a (x:xs) = f x (myFoldr f a xs)

実行。

 *Main> myFoldr (++) "d" ["a","b","c"]
 "abcd"
 *Main> foldr (++) "d" ["a","b","c"]
 "abcd"

OK。ちゃんとできてるな。

③reverse は,リストを逆転させる関数です。たとえば reverse [1,2,3] は [3,2,1] になります。この reverse を定義しなさい。

 myReverse []     = []
 myReverse (x:xs) = myReverse xs ++ [x]
 *Main> myReverse "abcde"
 "edcba"

こちらもOK。