嗨,我正在使用 Common lisp 制作歌曲数据库,我尝试检查歌曲信息是否格式正确——即歌曲信息列表中有 6 个元素,但我还想检查列表中每个元素的类型。我正在尝试使用 if 语句来执行此操作,首先检查是否有 6 个元素,然后检查每个元素的类型。
(defun checkSongInfo (par1 par2)
(if (= 6 (length (nth par1 par2))
(if (intergerp (first (nth par1 par2)))) 'complete 'incomplete))
所以基本上我有这个代码开始,老实说我刚刚开始使用 LISP 并且不熟悉它。基本上我在这里尝试做的是检查 6 个元素,如果这成功,则 if 语句的成功结果应该是然后检查列表的第一个元素,歌曲和列表作为参数传入,这些部分我的代码应该可以正常工作,因为我尝试将它们直接输入终端并且它们会做他们应该做的事情。问题在于 if 语句,目前它告诉我我的参数太少。当我这样做时,第一个 if 语句有效
if(=6 (length (nth par1 par2))) 'complete 'incomplete
但是当我放入另一个 if 语句时,它给了我 if 语句运算符错误消息的参数。这可能只是由于我对 LISP 的误解,我一直在寻找年龄并且无法提出解决方案。