我想让用户程序提取具有元素b (由参数给定)作为列表中的对的元素a。
例如,如果我给c作为参数并列出((c a) (c b) (d f) (d g)),那么结果应该是'a' 'b';
所以我定义一个函数如下,
(defun myr (b a) (if (= CAAR(a) b) CDAR(a) 'nope myr(b CDR(a))));像这样打电话
myr(b ((b a) (b c) (a d) (a f)))但结果就像variable myr has no value
这是我第一次用Lisp,所以只要告诉我我应该搜索什么关键字对我会有很大的帮助。
感谢您的阅读。
发布于 2019-05-19 23:07:10
你真的需要从一本好的lisp书开始,例如PCL或ACL。你会为自己节省很多时间。
Lisp语法与C不同。在C中,您可以使用参数х和y调用函数f,如下所示:f(x,y)。在Lisp语言中,你可以这样做:(f x y)。
在调用函数myr(...)时,将符号myr放在变量位置,而不是函数位置,这会导致报告的错误。
您还需要适当地使用quote。
https://stackoverflow.com/questions/56208001
复制相似问题