久しぶりScheme
久しぶりにschemeでコードを書いてみた。実用のコードでは初かな。処理系はGaucheで、標準入力から数値を入力して標準偏差を計算するコード。
(define (ave-list lst)
(/ (fold + 0 lst) (length lst)))
(define (var lst)
(let ((ave (ave-list lst)))
(/ (fold + 0
(map (lambda (x) (* x x))
(map (lambda (x) (- x ave)) lst)))
(length lst))))
(define (sd lst)
(sqrt (var lst)))
(display (sd
(map string->number (port->string-list
(current-input-port)))))
リストを修正するコードの連鎖と高階関数。この感覚がLISPっぽい。
新しいカメラは届きました。
2009-06-06 追記
はぁ?LET?とか言われそうなので(誰に?)、LETなしバージョンは、sdをこうすれば良い。
(define (var lst)
((lambda (ave)
(/ (fold + 0
(map (lambda (x) (expt x 2))
(map (lambda (x) (- x ave)) lst)))
(length lst)))
(ave-list lst)))
もう誰もついてきてないか....
あと写真を追加しました。
Categories
programming0 TrackBacks
Listed below are links to blogs that reference this entry: 久しぶりScheme.
TrackBack URL for this entry: http://www.argv.org/~chome/blog/mt-tb.cgi/73

