«Ограничительные» версии арифметических операций
Процедура
celsius-fahrenheit-converter
выглядит громоздко по сравнению со стилем определения в формате выражения:
(define (celsius-fahrenheit-converter x)
(c+ (c* (c/ (cv 9) (cv 5))
x)
(cv 32)))
(define C (make-connector))
(define F (celsius-fahrenheit-converter C))
Здесь
c+
,
c*
и т. п. — «ограничительные» версии арифметических операций. Например,
c+
берет в виде аргументов два соединителя, и возвращает соединитель, который связан с ними ограничением-сумматором:
(define (c+ x y)
(let ((z (make-connector)))
(adder x y z)
z))
Определите аналогичные процедуры для
c-
,
c*
,
c/
и
cv
(константа), так, чтобы можно было определять составные ограничения, как в вышеприведенном примере.
Комментарии отсутствуют.