&引用;展开;对于公共lisp?

&引用;展开;对于公共lisp?,lisp,scheme,common-lisp,reduce,fold,Lisp,Scheme,Common Lisp,Reduce,Fold,我从SICP学到了不少scheme,但现在对CommonLisp更感兴趣了。我知道common lisp的折叠是减少,具有用于左折叠或右折叠的特殊参数,但是展开的等价物是什么?谷歌搜索并没有起到多大作用。事实上,我得到的印象是没有展开???常见的lisp hyperspec没有定义一个展开函数,但您当然可以编写自己的函数。它的模式定义几乎是一个符号一个符号地转换。公共Lisp有(循环…收集…)。比较 (loop for x from 1 to 10 collect (* x x)) 一般来说,(

我从SICP学到了不少scheme,但现在对CommonLisp更感兴趣了。我知道common lisp的
折叠
减少
,具有用于左折叠或右折叠的特殊参数,但是
展开
的等价物是什么?谷歌搜索并没有起到多大作用。事实上,我得到的印象是没有展开???

常见的lisp hyperspec没有定义一个
展开
函数,但您当然可以编写自己的函数。它的模式定义几乎是一个符号一个符号地转换。

公共Lisp有
(循环…收集…
)。比较

(loop for x from 1 to 10 collect (* x x)) 一般来说,
(展开p f g种子)
基本上是

(loop for x = seed then (g x) until (p x) collect (f x)) (循环x=种子,然后(gx)直到(px)收集(fx))
编辑:修复打字错误

谢谢。那很不幸,但我想是的,我会自己写的。我真的很喜欢scheme,因为它如此纯粹,功能如此优美,但我已经有点听天由命地学习了复杂但表达力很强的普通lisp。这有点像学英语而不是世界语,你知道吗?嗯,那很有趣。在过去的一个小时里,我一直在玩loop:P它是很棒的东西!我喜欢当编程语言有这些小种类的嵌入式子语言时,它们有自己的语法和一组需要理解的规则,比如格式字符串。循环是强大的东西! (loop for x = seed then (g x) until (p x) collect (f x))