「入門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。