【问题标题】:Racket two methods referencing each other球拍两个相互引用的方法
【发布时间】:2021-03-25 19:20:41
【问题描述】:

我在 The Little Schemer 做练习,但我在 Racket 中使用 DrRacket 做练习。

其中一个练习有两种相互引用的方法。这可以在 Racket 中完成吗?如果可以,怎么做?

尝试在 DrRacket ide 中执行此操作时出现错误,因为在文件中较高位置创建的文件无法引用后面的内容。我假设这是因为它正在被解释,但我不确定。

有没有办法解决这个问题?

【问题讨论】:

    标签: recursion scheme lisp racket mutual-recursion


    【解决方案1】:

    是的,这在 Racket 中是可能的。它被称为“相互递归”,举个例子,我们可以定义过程odd?even?,这不是最有效的方法,只是为了演示这个概念:

    #lang racket
    
    (define (odd? n)
      (if (zero? n)
          #f
          (even? (- n 1))))
    
    (define (even? n)
      (if (zero? n)
          #t
          (odd? (- n 1))))
    

    也许您使用的教学语言禁止引用尚未定义的程序?点击窗口左下角并选择“从源代码确定语言”,然后在代码开头输入#lang racket

    【讨论】:

    • 谢谢,不知道我之前做了什么来触发它。切换到#lang racket 后现在无法重现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多