Решение упражнения 1.4 из SICP

14 August, 2007 (22:23) | Решения упражнений

Итак, нам предлагают код процедуры:

(define (a-plus-abs-b a b)
  ((if (> b 0) + -) a b))

Работает она очень просто и естественно (особенно если не вспоминать об ограничениях многих императивных языков). Так как операции + и - являются такими же полноправными членами языка, как и переменные, мы можем включать их в любые языковые конструкции. В данном случае мы над a и b выполням сложение, если b положительно и вычитание в противном случае. Нетрудно видеть, что это эквивалентно сложению a с модулем b.

Comments

Comment from ikuchmin
Date: October 24, 2010, 1:59 pm

На самом деле, операция не делает сложение с модулем b, возмите в качестве примера (a-plus-abs-b 2 -1).

Write a comment