Schemeの勉強を始めた
明日から大学の授業が始まる。いよいよ専門科目が始まるが、4学期はSchemeを使うらしいので軽く予習しておこうと思う。
関数型言語はemacs-lispとhaskellにちょっと触ったくらい。*1
処理系はGaucheをインストールした。
% sudo apt-get install gauche{,-dev,-doc} slib
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27051&forum=7
をさらっと読んで見たけど、このレベルなら問題ないっぽい。
とりあえずクイックソート*2
;;qsort.scm (use srfi-1) (define (qsort ls) (if (<= (length ls) 1) ls (let ((pivot (car ls))) (append (qsort (filter (lambda (n) (< n pivot)) ls)) (filter (lambda (n) (= n pivot)) ls) (qsort (filter (lambda (n) (> n pivot)) ls)))))) gosh>(load "/hogehoge/quick-sort.scm") #t gosh>(quick-sort (list 8 2 7 4 1 9 3 6 5 0)) (0 1 2 3 4 5 6 7 8 9)
うん。よさげ。でもやっぱりhaskellの方が見ためは直観的だ。
やっぱり「計算機プログラムの構造と解釈」を読みたいなぁ。最近本を買いすぎで金が無いから大学で借りてこようかな...あ...貸出し中なのねorz
*1:しかも、私はvim使いなので1年くらいemacsには触ってない(笑)
*2:このコードはhttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27051&forum=7を参考にさせていただきました