リストの最後の要素を取得する関数をいくつか定義してみる。
Preludeに既に定義ズミのreverseを利用して。
last.hs (reverseを使用 )
last :: [a] -> a
last xs = head $ reverse xs
演算子!!を利用して。
last.hs (演算子!!を利用して)
last_idx :: [a] -> a
last_idx (xs) = let n = (length xs) - 1 in xs !! n
左畳み込み関数foldl1と、ラムダ式を利用して。
last.hs (foldl1を利用)
last_foldl1 :: [a] -> a
last_foldl1 xs = foldl1 (\_ x -> x) xs
この中で、一番Haskellらしい書き方は、最後の左畳込み関数holdl1を使ったやり方かなぁ?
他は、命令型言語と同じアイディアで書けるし...。