Haskellで、引き渡したリストを2分割する関数を定義します。
上手い具合に、既に定義ズミの関数 splitAtがあるのでこれを利用して。
splitAtの型定義
splitAt :: Int -> [a] -> ([a], [a])
上記の関数を二通りの方法で、利用して関数を書きます。
一つは、分割時に指定するリストインデックスを中置記法で算出する方法、
もう一つは、本質的には、異なりませんが、セクションを利用してリストインデックスを算出する方法。
halve_infix.hs(中置式記法)
halve :: [a] -> ([a],[a])
halve xs =
let n = (length xs) `div` 2
in splitAt n xs
halve_section.hs(セクション)
halve :: [a] -> ([a],[a])
halve xs =
let n = (`div` 2) $ length xs
in splitAt n xs
なんか、どっちもあんまり代わり映えしないな...。