計算機プログラムの構造と解釈 第二版 P43 問題1.42
問題を読む。
チョロそうだ。
合成関数っていうのの説明は書いてあるし、
結局、
g(x)を作用させた後の値をyとすると
さらにf(y)までやった値を返すことができる
「手続き」
を返す
手続きを作ればいいってことだ。
いちおう、教科書で使っている
incやsquareも作っておく。
ってことでいきなりソースっす。
#!/usr/local/bin/gosh ;; -*- coding: utf-8 -*- (define (inc x) (+ x 1)) (define (square x) (* x x)) (define (compose f g) (lambda (x) (f (g x)))) ;; main (define (main args) (display "(inc 6) : ") (display (inc 6)) (newline) (display "(square 7) : ") (display (square 7)) (newline) (display "((compose square inc) 6) : ") (display ((compose square inc) 6)) (newline) 0)
実行
(inc 6) : 7 (square 7) : 49 ((compose square inc) 6) : 49
できてると思う。