【发布时间】:2011-09-09 10:42:57
【问题描述】:
在 Common Lisp 中,如果我想检查一个列表是否不为空,我可以简单地使用列表本身作为条件,因为所有非空列表都被认为是真的。但是,我发现在Scheme中,做同样的事情会让Scheme认为我正在尝试调用一个函数。有没有比定义另一个函数(not (null? x)) 更好的方法来检查Scheme 中的列表是否为空?
【问题讨论】:
-
“会让Scheme认为我正在尝试调用一个函数”是什么意思?
-
如果我使用列表(作为函数参数传递)作为条件,@leppie Scheme 会抱怨。我在 Google 上查找了投诉,显然 Scheme 正在尝试使用列表中第一项的名称调用该函数,并且由于该函数不存在,Scheme 抱怨
-
听起来你没有引用列表,@ 987654322@ vs
'(1 2 3)后者是正确的。空列表也需要引用,iow'(). -
@leppie 但是在使用函数参数时我不能引用,因为我会告诉Scheme使用符号而不是变量指向的列表
-
对不起,我不明白你的意思,请提供一些代码示例,你所期望的,你实际得到的,错误信息以及你的 Scheme 实现也欢迎。
标签: scheme