You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scheme值反转问题:布尔值正常但数值反转失效求助

修正你的Scheme inverse 函数

你的思路完全没问题——对布尔值取反、对数值反转正负,但数值处理部分犯了个Scheme语法的小错误:在Scheme中,一元负号操作必须用括号包裹,也就是(- x),而不是- x。后者会被解释成两个独立的符号(减号和变量x),而不是一个取反操作,所以无法正确计算数值的相反数。

修正后的代码

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

测试验证

  • 布尔值测试:(inverse #t) 返回 #f,(inverse #f) 返回 #t,和预期一致。
  • 数值测试:(inverse 5) 返回 -5,(inverse -3) 返回 3,现在可以正确反转正负了。

如果后续需要处理更多类型(比如字符串、列表等),可以在cond里添加更多分支,但当前代码已经完美满足你提出的需求啦!

内容的提问来源于stack exchange,提问作者Adam Morad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:17:27