計算機プログラムの構造と解釈 第二版 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


できてると思う。