scheme - SICP视频讲座2

标签 scheme racket sicp

我有这个例子的问题

(define (+ x y)
  (if (= x 0)
      y
      (+ (-1+ x) (1+ y))))

-1+和1+的问题是什么,当我评估它时我得到了这个结果
  • DrScheme:-1+:此函数未定义
  • Racket :对未定义标识符的引用:-1+

  • 但是我写了这个,它有效
    (define (add x y)
      (if (= x 0)
          y
          (+ (- x 1) (+ y 1))))
    

    最佳答案

    对于 Racket :

  • 使用add1代替1+
  • 使用sub1代替-1+1-

  • 麻烦的是,这些名称都不是标准名称,因此您不能在所有Scheme实现中可靠地使用它们。 :-)

    关于scheme - SICP视频讲座2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7695003/

    相关文章:

    scheme - 如何在 Racket 列表中进行分配

    scheme - Racket 迭代和递归

    command-line - 从 DrRacket 读取命令行参数

    scheme - 类方法不能用于andmap?

    recursion - 使用递归在 Scheme 中相乘

    recursion - 计算句子中奇数的个数

    filter - 在方案 (SCM) 中的 Define Filter 函数的结果末尾获取 #f 或 False

    scheme - 对于应用顺序,参数的评估顺序是什么?从左到右还是从右到左?

    scheme - (方案)使用 do cicle 验证一个列表中的元素是否在第二个列表中

    scheme - applicative-order/call-by-value 和 normal-order/call-by-name 的区别