代码之家  ›  专栏  ›  技术社区  ›  Adam Morad

方案反转值

  •  1
  • Adam Morad  · 技术社区  · 6 年前

    我试图将#t转换为#f,#f转换为#t,并将负数转换为正数和负数。

    (define inverse
      (lambda (x)
        (cond ((eq? x #t) #f)
              ((eq? x #f) #t)
              (else - x))))
    

    它适用于布尔值,但不适用于数字。

    1 回复  |  直到 6 年前
        1
  •  3
  •   bipll    6 年前

    (else - x) 不是有效的表单。将其更改为 (else (- x))

    顺便说一句,你可以不带 cond :

    (define (inverse x) (if (boolean? x) (not x) (- x)))