我正在按照介绍学习Emacs Lisp。
我可以理解下面的defun按从左到右的顺序打印列表,因为打印命令在递归之前出现(正如我所理解的):
(defun print-elements-recursively (list)
"Print each element of LIST on a line of its own.
Uses recursion."
(when list ; do-again-test
(print (car list)) ; body
(print-elements-recursively ; recursive call
(cdr list)))) ; next-step-expression
E、 g.列表
'(gazelle giraffe lion tiger)
。打印顺序为
gazelle
,
giraffe
,
lion
,
tiger
.
然而,我无法理解当我在
when
正文:
(defun print-elements-recursively (list)
"Print each element of LIST on a line of its own.
Uses recursion."
(when list ; do-again-test
; body
(print-elements-recursively ; recursive call
(cdr list))
(print (car list)))) ; next-step-expression
按照我的预期,递归发生在
print
因此,顺序应该颠倒。我可以知道为什么吗?