如何在不引入新依赖项的情况下替换Common Lisp中“循环”函数的使用?

时间:2015-07-03 19:37:08

标签: common-lisp

似乎Common Lisp中的循环函数违背了该语言其余部分的常规语法和样式。我可以使用哪些函数或技巧来避免在不引入更多依赖项的情况下使用循环?

2 个答案:

答案 0 :(得分:3)

了解其他循环形式:dodo*dotimesdolistmapmapcarmapconmaplistmapcmaplreduce,....

有些事情非常方便地表达为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才能工作)