空的?不会从 运行 表达式停止球拍

empty? does not stop Racket from running expression

我正在尝试让函数从列表中的结构中获取数字。当列表为空时,函数应输出+inf.0。

但是,当我输入这样一个空列表时:(function (list empty)),+inf.0 部分被忽略,else 表达式仍然执行,导致 struct-xyz 为空的错误列表或第一个不允许空列表。我做错了什么?

(define (function datalist)) 
(cond 
 [(empty? datalist) +inf.0]
 [else(struct-xyz (first datalist))]))

以上都是初级教学语言。

你应该打电话给 (function empty),而不是 (function (list empty))(function (list empty)) 正在 不是 空的列表上调用您的函数,它包含一个元素(另一个列表,它是空的)。