『プログラミングHaskell』の練習問題を解く

『プログラミングHaskell』の練習問題を解く、の続きです。

2.6 練習問題

4. この章で紹介したライブラリ関数を使って、空ではないリストの最後の要素を取り出す関数lastを定義せよ。さらに他の定義も考えよ。
last xs = head(reverse xs)
last xs = xs!!(length xs - 1)
5. 同様に、空ではないリストから最後の要素を取り除くライブラリ関数initが、二通りの方法で定義できることを示せ。
init xs = take(length xs - 1)xs
init xs = reverse(tail(reverse xs))

3.11 練習問題

1. 以下の値の型は何か?
['a','b','c']
[Char]

[('a','b','c')]
[(Char,Char,Char)]

[(False,'o'),(True,'1')]
[(Bool,Char)]

([False,True],['o','1'])
([Bool],[Char])

[tail,init,reverse]
[[a] -> [a]]