Haskell 事始め

Haskellをやってみようかと思う。関数型言語は昔 Emacs Lisp が全く理解できず投げ出したままなんだけど。

とりあえず最初にチラ見したもの(全部読んだとは言ってない):

当初リファレンスがどこにあるのかよくわからなかったが、多分GHC Documentationを見ればいいのだろう。Prelude ってのが組み込み関数モジュールみたいなもんだと思われる。

記号類はググラビリティが悪いので、Haskellの演算子について纏めてみたという記事もブックマークしておくことにする。

手始めに FizzBuzz を書いてみた(入力処理は省略):

fizzbuzz n
    | n `mod` 15 == 0 = "FizzBuzz"
    | n `mod`  3 == 0 = "Fizz"
    | n `mod`  5 == 0 = "Buzz"
    | otherwise       = show n

main :: IO ()
main = do
    print (map fizzbuzz [1..100])

print の部分は括弧を避けるために $ 演算子を使うこともできる模様:

print $ map fizzbuzz [1..100]

Lisp 臭を消すのに使えそう。合成関数を作る . 演算子も有用か。

ところでこの記事はhateblo.vimを使って Markdown で投稿したのだが、段落中の改行が空白に変換されてしまうのは仕様なんだろうか。改行を入れると以下の段落のようになる:

こ の 段落は改 行を入 れま くってま す

仕方ないので当面はブログを書くときだけ set textwidth=0 しようと思う。Vim は物理行単位での移動ができる(j, kgj, gk にリマップ)のでまぁこれでも困らないのだが。他の人はどうしてるんだろうな?