Scheme::R5RS。尝试制作绝对值程序

Scheme::R5RS. Trying to make the absolute value procedure

我正在尝试使绝对值过程和代码出错。我不知道为什么:/

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

错误信息:

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

abs 过程已经是您正在使用的语言的一部分,您不能创建另一个具有相同名称的过程。简单地重命名它(顺便说一句,实现可以简化一点):

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

这是您问题的简单解决方案。

(define (abs x)
(if (< x 0) (* x -1) (* x 1)))

这是 DrRacket 中的结果:

> (abs -4)
4

> (abs 3)
3