【发布时间】:2023-04-10 01:52:01
【问题描述】:
我对 LISP 编程非常陌生,而且我在语法方面遇到了困难。以下代码来自我的笔记,我知道它的作用,但我非常感谢逐行细分以更好地了解这里发生的事情。 “when”循环似乎很容易理解,但特别是我很难理解“do”循环中的前 3 行。另外我不确定为什么在when 循环的最后一行使用了(:= acc (1+ acc)。
(defun count-lower-case-vowels (str)
(do ((i 0 (1+ i))
(acc 0)
(len (length str)))
((= i len) acc)
(when (or (equal (aref str i) #\a) (equal (aref str i) #\e)
(equal (aref str i) #\i) (equal (aref str i) #\o)
(equal (aref str i) #\u))
(:= acc (1+ acc)))))
【问题讨论】:
-
发生了什么是某人的“TAB”键坏了。我建议使用一个很好的代码编辑器,它会为你缩进。它会让很多事情变得更清楚。
-
@SilvioMayolo 你推荐什么代码编辑器?
-
@snk Emacs 和 Vim 都会正确缩进 Lisp 代码。
标签: string lisp common-lisp do-loops