我从 SICP 学到了很多方案,但现在对 common lisp 更感兴趣。我知道常见的 lispfold
是reduce
,带有左或右折叠的特殊参数,但相当于unfold
什么?谷歌搜索没有多大帮助。事实上我得到的印象是没有展开???
问问题
1220 次
2 回答
13
Common Lisp 有(loop ... collect ...)
. 比较
(循环从 1 到 10 收集 x (* xx))
其等价物使用unfold
:
(展开(λ(x)(> x 10)) (λ (x) (* xx)) (λ (x) (+ x 1)) 1)
一般来说,(unfold p f g seed)
基本上是
(循环x =种子然后(gx)直到(px)收集(fx))
编辑:修正错字
于 2009-10-26T12:23:50.600 回答
3
common lisp hyperspec 没有定义unfold
函数,但您当然可以编写自己的函数。它的方案定义几乎将符号转换为符号。
于 2009-10-26T05:47:21.270 回答