0

原始问题:编写一个递归 Racket 函数“more”,它接受两个列表 xs 和 ys 作为参数,如果 xs 的元素多于 ys,则返回 true,否则返回 false。例如 (more '(1 2 3) '(1 2)) 应该评估为真,而 (more '(1 2 3) '(0 1 2)) 应该评估为假。

(define (more xs ys)
        (if (empty? ys)
                (if (empty? xs) #false #true)
        (if (empty? xs) #false (more (cdr xs) (cdr ys)))))
        

(writeln (more '(1 2 3) '(1 2)))
(writeln (more '(1 2 3) '(0 1 2 3)))
(writeln (more '(1 2 3) '(0 1 2)))

我收到“:13:空?:未绑定标识符:空?”的错误 “空”如何?未绑定的标识符。

4

1 回答 1

0

看起来您正在使用#lang racket/base#lang racket/base在第一行中有)。在#lang racket/base,empty?默认情况下不提供给您。

您的作业可能希望您使用学生语言(单击 DrRacket 中左下角的下拉按钮更改为,例如,Beginning Student),并且empty?默认情况下会提供给您。

或者,如果您真的打算使用#lang racket/base,您可以添加(require racket/list)empty?提供给您。

或者,更改#lang racket/base#lang racketwhich 将自动(require racket/list)与其他几个库一起。

于 2021-10-03T19:39:45.613 回答