Open Source WEB

##(link2sicp "book-Z-H-12.html#%_thm_1.41" "Exercise 1.41")

解答例

double は引数として一引数の手続きをとり、 受け取った手続きを二回作用させる手続きを返す。

(define (double f)
  (lambda (x) (f (f x))))

(double double) は doble を二回作用させる手続きを返す。 すなわち、受け取った手続き (2^2 = 4)回作用させる手続きを返す。

(double (double double)) は引数として一引数の手続きをとり、 (4^2 = 16)回作用させる手続きを返す。

したがって、(((double (double double)) inc) 5) は 21 となる。

gosh> (((double (double double)) inc) 5)
21

コード

##(sicp-answer-code "ex-1.41.scm")

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us