練習問題 5.2.3

4.2節で定義されている標準関数
splitAt
を使って,
divide
の(同一ではない)別定義を与えよ.本書における
divide
の定義は対象のリストを一度しか辿らないが,別定義ではそのようになっているか.



以下の定義では
length
を計算するのに1度リストを辿り,
splitAt

でリストを半分のところまで辿る.

divide :: [a] -> ([a],[a])
divide = splitAt . (`div` 2) . length <*> id