Haskellという言語

先日、
Shibuya Perl Mongers : Shibuya Perl Mongers テクニカルトーク #6
というのPerlerたちの集いが開催されて(行きたかったけど行けなかったのですが)、内容を見ていてICFPというのを知りました。最強のプログラミング言語を決めるためのイベントらしいです。で、どうやらHaskellというのが最強らしい。Haskell関数型言語なのですが、そもそもこのイベント、「International Conference on Functional Programming」ということで関数型言語のお祭りなのでちょっと偏りがあるかもしれません。でもちゃんとCとかC++とかPerlとかPythonとかJavaとかもエントリしているのだけれど。
で、ちょっと興味が湧いたので少し調べてみました。
About Haskell
そしたらすごいのね。例えばクイックソートするプログラム。

qsort [ ]     = [ ]
qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
                 where
                   elts_lt_x   = [y | y <- xs, y < x]
                   elts_greq_x = [y | y <- xs, y >= x]

これだけ。っていうかこれって単にクイックソートの説明みたいだ。クイックソートは「適当に閾値を決めて小さいほうと大きいほうのグループに分ける」というのを繰り返すことでソートするんだけど、このプログラムの場合はxが閾値です。で、2行目で[x]を真ん中にしてelts_lt_x(たぶんelements_less_than_x)とelts_greq_x(たぶんelements_greater_equal_x)をくっつけてるだけ。それぞれの定義はwhere以降という具合。びっくり。説明によるとクイックソートの場合はちょっと極端な例ということだけれど、Cより断然短いしわかりやすい。説明を読んだだけだと細かいところまではわからないけれど、なんかすごい。

    • -

ちなみにPerl6(いまはPerl5)はHaskellで実装されているらしいです。

Pugs is an implementation of Perl 6, written in Haskell.
Voucher Codes - Save Money, whilst Raising Money For Charity

へー。

    • -

関数型言語を使えると頭よさそうに見えるので使えるようになってみたいものです。

    • -

補足(2006/05/25):
Perl6がHaskellで実装されてるというわけではなくて、HaskellによるPerl6の実装がPugsですね。