我想分支並學習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