reverse を自分で実装
突然 Haskell ネタ。リストの要素を逆順にして返す関数、reverse。これと同等の機能を自作してみよう。車輪の再発明だけど学習の過程においては効果的な方法なのである。
myReverse :: [a] -> [a] myReverse [] = [] myReverse (x:xs) = myReverse xs ++ [x]
これで、
Main> myReverse "abcde" "edcba" Main> myReverse [1,2,3,4,5] [5,4,3,2,1]
のように逆順の値が返ってくる。自分で書いたコードが動いてようやく「分かった」という気になる。少し前進。
※追記 GHC のソースを見ると、foldl、flip などを使って実装しているようである。まだ自分にはさっぱり分からない。
Real World Haskell―実戦で学ぶ関数型言語プログラミング
- 作者: Bryan O'Sullivan,John Goerzen,Don Stewart,山下伸夫,伊東勝利,株式会社タイムインターメディア
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/10/26
- メディア: 大型本
- 購入: 8人 クリック: 245回
- この商品を含むブログ (76件) を見る
現在第4章を読んでる最中