« HTML5雑感 | Home | カメラが直ったので里親募集 »

June 3, 2009

久しぶりScheme

PHOTO: On Lisp Cover

 久しぶりに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)))

もう誰もついてきてないか....
あと写真を追加しました。

No TrackBacks

TrackBack URL: http://www.argv.org/~chome/blog/mt-tb.cgi/180

About this Entry

This page contains a single entry by chomy published on June 3, 2009 3:27 AM.

HTML5雑感 was the previous entry in this blog.

カメラが直ったので里親募集 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.