Haskellに入門

Haskellに入門

関数型言語というものにあこがれて、Haskellを勉強してみようと思い立ちました。

とりあえず、Hugsという処理系を導入(ダウンロードしてインストールするだけ)して、いろいろ調べてみました。

でも、まったく意味がわからない…

Haskellでクイックソートの実装とかのコードを見てみて、なんとなくすごいってことはわかったけど、これで実際にどういうプログラムが書けるのかがまったく思い浮かばない…

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

↑のコードを見て、とりあえずわかったのはオーバーロードが可能なんだなってことぐらい。

あと、↓のコードってprototype.jsのFunction.prototype.bindに似てるよね。

m10 = max 10

ってか、C言語で書かれたクイックソートと、Haskellで書かれたクイックソートを並べて、Haskellすげーって言ってるサイトが多いんだけど、↑のアルゴリズムならJavaScriptでも5行で書けた。

var qsort = function self(list) {
    var len = list.length;
    if (len < 2) return list;
    var x = list[0], y = list[1], lt = [], gt = [];
    for (var i = 1; i < len; y = list[++i]) (y < x ? lt : gt).push(y);
    return self(lt).concat([x], self(gt));
};

「クイックソートのコード ≒ クイックソートの定義」っていう点でHaskellはすごいが、それ以上のすごさはもう少し勉強してからじゃないとわからなそうだ。

スポンサーサイト



関連記事

トラックバック URL

http://liosk.blog103.fc2.com/tb.php/51-26acb5ff

トラックバック

コメント

コメントの投稿

お名前
コメント
編集キー