我没有在 Common-Lisp 中得到这第一件事/最后一件事。是的,我知道它是如何工作的,但我不明白为什么它会这样工作。
基本上,要获得列表中的第一项,我可以使用(first mylist)
. 但是,如果我想要最后一项,(last mylist)
不要给我;相反,它给了我一个列表,其中包含我列表中的最后一项!
(我正在使用 Clozure-CL,它还有一些其他奇怪的东西,对我来说似乎是错误,但是,因为我是 Lisp-n00b,所以我尽量不要陷入旧的“解释器坏了!”把戏:) )
因此,例如:
? (setq x '((1 2) (a b)))
=> ((1 2) (A B))
? (first x)
=> (1 2) ; as expected
? (last x)
=> ((A B)) ; why a list with my answer in it?!
? (first (last x))
=> '(A B) ; This is the answer I'd expect from plain-old (last x)
有人可以帮我理解为什么最后会这样做吗?我是否错误地使用了这些物品?真的first
是奇球吗?!
谢谢!