Hatena::ブログ(Diary)

計算機と戯れる日々 このページをアンテナに追加 RSSフィード

2007-11-23

Haskellの表記をGaucheと併せて比べてみる。

まずは、shiroさんに教えてもらったGaucheコード*1

(use util.match)
(define qsort (match-lambda (()()) ((x . xs) (receive (l r) (partition (cut < <> x) xs) `(,@(qsort l) ,x ,@(qsort r))))))

次になるべく似せたHaskellコード

import List
qsort [] = [] ; qsort (x:xs) = (\y->(qsort $ fst y)++[x]++(qsort $ snd y)) $ partition (\y->y<x) xs

partitionの受けが多値かタプルの違いと準クオートぐらいか。

こうやって並べるとリスト内包表記はすごいんだな。

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

まあ、こうやって比較していくのはいいことだ。いろんな勉強ができる。

*1:やっとそらでかけるようになった(涙

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/n9d/20071123/1195821592
Connection: close