shokosブログ

プログラミング

Haskellが短く書けてステキな件について

(主に私のまわりで)流行っているからというミーハーな理由でHaskellを勉強中です。

単純に短く書けてすごいなと思います。
例えば、リストを引数に渡して、偶数の要素だけ返す関数なんかこれだけでおk。

evenList :: [Int] -> [Int]
evenList [] = []
evenList (x:xs)| even x = x : evenList xs
		| otherwise = evenList xs

リスト内包表記を使うともっと短い。

evenList :: [Int] -> [Int]
evenList xs = [ n | n <- xs, even n]

リスト内包表記はプログラマ厨二病心にドンピシャだったのだけど、複雑な処理の場合わかりずらい見た目になりそうで、気をつけようと思った。



ちなみに重複を取り除けなんて仕様変更があってもへっちゃらです。

evenList3 xs = nub $ evenList xs