«Ограничительные» версии арифметических операций

Процедура 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 (константа), так, чтобы можно было определять составные ограничения, как в вышеприведенном примере.


Комментарии отсутствуют.

Необходима авторизация

Вы должны авторизоваться для создания комментария.

Вход