続き

帰宅。どうも scheme 脳が退化している。着信を待ちつつ次の問題着手。

問題 1.42

compose は以下なカンジ?

(define (compose f1 f2)
  (lambda (x)
    (f1 (f2 x))))

試験後付けになってしまった。

(use gauche.test)

(add-load-path ".")
(load "compose")

(test-start "compose")
(test-section "compose")
(test* "example"
       49
       ((compose square inc) 6))

(test-end)

不動点

1.3.3 節の_関数の不動点の探索_という項、きちんと高等数学に取り組んでないので色々な意味で興味深い。曰く

x が f(x) = x を満す時、x を関数 f(x) の不動点 (fixed point) という. ある関数 f について、最初の予測値から始め、f を値があまり変わらなくなるまで繰り返し作用させることで、不動点を見つけることが出来る.

という記述がある。あと同じ節で出てくる average damping についても理屈が分かれば面白いんだろうけどな。

問題 1.43

このあたりがイメージできるようになったら scheme 脳のリハビリはできてるカンジでしょうか。例示されてるソレで試験を書く。

(use gauche.test)

(add-load-path ".")
(load "repeated")

(test-start "repeated")
(test-section "repeated")
(test* "example"
       625
       ((repeated square 2) 5))

(test-end)

基本的には繰り返しを使ってあげれば良いカンジ。引数の名前とかそのあたりでバッティングがあって微妙にハマりましたがさほど難しくはないです。続きを検討できれば追記します。