プログラミング Haskell 第7章 高階関数 練習問題その2

今日も 7.8 練習問題を解きます。だんだん読み進めるスピードが遅くなってきてしまいますが、ここはちゃんとやっておいたほうがよさそうなので我慢我慢。

5.
これは問題文を読んでいるだけではわからなくて ghci で入力してみようとしてやっとわかりました。リストには同じ型の要素しか入れられないので、型の違う関数を compose にリストで渡すのは不可能です。

6.
これは組の要素数は2固定でいいんですよね?

curry f a b = f (a, b)
uncurry f (a, b) = f a b

7.

chop8 = unfold null (take 8) (drop 8)

map f = unfold null (f . head) tail

iterate f = unfold (\x -> False) id f

iterate は無限リストを作るので、unfold の最初の引数は「任意の引数を受け取って False を返す関数」です。組み込みでありそうですがみつけられずλで代用。

今日はここまで。練習問題に3日もかかりそうです。