Haskellにはどうしてfor文がないんだ?
今日「Haskellにはどうしてfor文がないんだ?」と聞かれて、うまく答えることができなかった。悔しかった。「Haskellには副作用がないから」では答えになってるだろうか?「なぜ関数プログラミングは重要か」を読めっていうのもなー。
http://www.sampou.org/haskell/article/whyfp.html
でもよくよく考えるとfor文ってわかりづらいよなー。なんであそこん中だけグルグル回るんだ?不自然だ。無くてすむなら取り立てて必要でもないでしょ、あんなもん。
そんなわけでHaskellでuniq関数を作った。Javaならどう書くんだろう?なんか大変になんないか?やりたいことから遠いつーか。
-- uniq "112233" => "123" uniq :: Eq a => [a] -> [a] uniq [] = [] uniq (x:xs) = x : uniq (filter (/= x) xs)
ちなみにRubyだと一撃。サスガ。
"112233".split(//).uniq.join