Haskellに入門
- 2007-11-05
- カテゴリ: その他のプログラミング
- タグ: 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