Решение упражнения 1.4 из SICP
Итак, нам предлагают код процедуры:
(define (a-plus-abs-b a b) ((if (> b 0) + -) a b))
Работает она очень просто и естественно (особенно если не вспоминать об ограничениях многих императивных языков). Так как операции + и - являются такими же полноправными членами языка, как и переменные, мы можем включать их в любые языковые конструкции. В данном случае мы над a и b выполням сложение, если b положительно и вычитание в противном случае. Нетрудно видеть, что это эквивалентно сложению a с модулем b.
Write a comment