似乎Common Lisp中的循环函数违背了该语言其余部分的常规语法和样式。我可以使用哪些函数或技巧来避免在不引入更多依赖项的情况下使用循环?
答案 0 :(得分:3)
了解其他循环形式:do
,do*
,dotimes
,dolist
,map
,mapcar
,mapcon
,maplist
,mapc
,mapl
,reduce
,....
有些事情非常方便地表达为loop
形式,所以不要过于虔诚。例子:
(loop :repeat n :do (stuff))
(loop :for line := (read-line in nil)
:while line
:do (stuffle line))
答案 1 :(得分:1)
map
函数和reduce
应解决许多问题。如果你认为它是loop
的风格,你可能想尝试Iterate更高阶函数不够。
修改强>
你为什么要避免依赖?使用可用代码比避免它更好并且做更多工作。制作有关如何安装依赖项的安装说明。 Iterate有quicklisp support,就像lisp包的数据包管理器一样。我只需要评估(ql:quickload "iterate")
安装和加载它。 (当然你需要安装quicklisp才能工作)