9

我从 SICP 学到了很多方案,但现在对 common lisp 更感兴趣。我知道常见的 lispfoldreduce,带有左或右折叠的特殊参数,但相当于unfold什么?谷歌搜索没有多大帮助。事实上我得到的印象是没有展开???

4

2 回答 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 回答