В примере из Википедии *
не означает то же самое, что и *
в обычном примере.
Я бы переписал пример из Википедии как:
(define (pyth x y k)
(cps-* x x (lambda (x2)
(cps-* y y (lambda (y2)
(cps-+ x2 y2 (lambda (x2py2)
(cps-sqrt x2py2 k))))))))
В этой форме каждая из cps-xxx
функций выполняет указанную операцию и затем передает результат последнему аргументу.Вы могли бы назвать это так:
(pyth 2 3 display)
, который умножил бы 2 и 3, давая 6, а затем передавая 6 в display
.(На самом деле вы хотели бы передать результат в cps-display
, который отображал свои начальные аргументы и затем вызывал другую функцию , указанную в качестве последнего параметра).