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