我想分支并学习lisp。其中一个基本要素就是实现一个简单的堆栈。一切正常,但我的pop
功能。堆栈弹出不返回
;Returns and removes the first element of the stack
(defun my-pop()
(let (temp (car *stack*))
(setq *stack* (cdr *stack*))
temp))
这正确地删除堆栈的“顶部”,但不返回它。此前,我有这样的:
;Returns and removes the first element of the stack
(defun my-pop()
(print (car *stack*)
(setq *stack* (cdr *stack*)))
但我宁愿返回顶部。
我在做什么错? (我认为这与范围有关...)
需要注意的是,标准中已经定义了'pop'和'push'。 – Svante
@Svante还应该注意的是,问题始于“我试图分支并学习lisp。其中一个基本原理就是实现一个简单的堆栈。” (这就是为什么它被命名为'我的流行') – SomeKittens
这就是为什么我说“应该注意”,而不是“阅读精美的手册”。我不希望人们搜索“stack common lisp”,然后认为他们必须自己实现它。 – Svante