我想让用户程序提取具有元素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,所以只要告诉我我应该搜索什么关键字对我会有很大的帮助
我正在尝试学习Common,并在repl中尝试某些东西时(对我来说)发现了一些意想不到的东西。基于大多数编程语言的执行顺序,以及我从lisp中听到的一流函数支持,我认为以下几点应该有效:
((if t 'format) t "test")
在Ruby中,我可以做到:
if true
Object.method(:puts)
end.call("test")
我在上面的lisp代码应该如何工作的想法是,它应该计算内部lisp表单,返回格式,然后开始计算外部lisp形式,然后format是第一个原子。我读到第一个表单需要是一个符号,所以我也尝试了((if