; tree ::= int | (make-pair tree tree) ; tree -> int (define-struct pair (left right)) (define (Pi t) (cond [(number? t) t] [else (* (Pi (pair-left t)) (Pi (pair-right t)))])) (define t1 (make-pair 166 (make-pair 12 24))) (define (Pi/k1 t k) (cond [(number? t) (k t)] [else (k (* (Pi (pair-left t)) (Pi (pair-right t))))])) (define id (lambda (x) x)) (define (Pi/k2 t k) (cond [(number? t) (k t)] [else (Pi/k2 (pair-left t) (lambda (itroc) (k (* itroc (Pi (pair-right t))))))]))