6.0 KiB
6.0 KiB
title | author | date | wordtwit_post_info | categories | |||
---|---|---|---|---|---|---|---|
lambdaでてきた | kazu634 | 2008-07-29 |
|
|
asin:4873113482:titlde]で勉強してる。
lambdaでてきた
(define (length lis) (fold (lambda (a b) (+ b 1)) lis))
無名の手続きを定義できる…らしい。まだよくわかっていない。
for-eachをつかう
gosh> (for-each (lambda (x) (print "> " x)) '(a b c)) > a > b > c #<undef>
他の言語では構文になっているものがSchemeでは手続きfor-eachとして提供されているのは、手続きにしておくことでfor-eachそのものを別の「手続きをとる手続き」に渡すことができるからです。
例を見せられて、腑に落ちた。こんなのありなんだ。
;; (if (list? elt) ... )は ;; treeが'((1 2 3) (4 5 6))みたいなとき ;; を念頭に置いているよ。 (define (tree-walk proc tree) (for-each (lambda (elt) (if (list? elt) (tree-walk proc elt) (proc elt))) tree))
procにprintを入れるなんてありなんですね。そうですね。
次は66ページから。
- 作者: Kahuaプロジェクト,川合史朗
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/03/14
- メディア: 大型本
- 購入: 22人 クリック: 713回
- この商品を含むブログ (272件) を見る