Решение упражнения 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.

Write a comment