Схема :: R5RS. Попытка сделать процедуру абсолютного значения - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь сделать процедуру абсолютного значения, и код получил ошибку. Я не знаю почему: /

(define (abs x)
   (cond ((> x 0) x)
       ((= x 0) 0)
       ((< x 0) (- x))))

Сообщение об ошибке:

define-values: assignment disallowed;
 cannot change constant
  constant: abs

1 Ответ

0 голосов
/ 14 февраля 2020

Процедура abs уже является частью языка, который вы используете, и вы не можете создать другую процедуру с тем же именем. Просто переименуйте его (и, кстати, реализацию можно немного упростить):

(define (myabs x)
  (cond ((>= x 0) x)
        (else (- x))))
...