我从SICP了解了一些计划,但现在对通用的lisp更感兴趣。我知道普通lisp的fold
是reduce
,有左或右折叠的特殊参数,但是相当于unfold
?谷歌搜索没有多大帮助。事实上,我得到的印象是没有展开的?“unfold”for common lisp?
9
A
回答
13
Common Lisp有(loop ... collect ...)
。比较
(loop for x from 1 to 10 collect (* x x))
使用unfold
其等价:
(unfold (lambda (x) (> x 10)) (lambda (x) (* x x)) (lambda (x) (+ x 1)) 1)
一般来说,(unfold p f g seed)
基本上是
(loop for x = seed then (g x) until (p x) collect (f x))
编辑:修正了错字
3
通用lisp hyperspec没有定义一个unfold
函数,但是你当然可以编写自己的函数。它的方案定义为符号翻译几乎符号。
+3
感谢。这是不幸的,但我想是的,我会写我自己的。我真的很喜欢这样纯粹的计划,拥有如此美丽的功能性善良,但我有点自to为学习纠结而又富于表现力的共同诽谤。这有点像学习英语而不是世界语,你知道吗? – nullpointer 2009-10-26 05:55:29
相关问题
- 1. Common Lisp a Lisp-n?
- 2. Common Lisp Loop Trouble
- 3. Common Lisp中
- 4. Common Lisp流?
- 5. Step Eval Common Lisp
- 6. Predicates Common Lisp
- 7. Common Lisp SublimeREPL
- 8. Common Lisp Binary Tree
- 9. Scheme或Common Lisp?
- 10. common lisp和emacs
- 11. 与Common Lisp中
- 12. Common Lisp Timer
- 13. Scheme vs Common Lisp
- 14. 关于Common Lisp中
- 15. asdf building和Common Lisp
- 16. Common Lisp弱引用?
- 17. 规则Common Lisp中
- 18. 如果Common Lisp中
- 19. 的#ifndef Common Lisp中
- 20. 使用的Common Lisp
- 21. 如何Common Lisp中
- 22. 替换Common Lisp中
- 23. (撰写)在Common Lisp
- 24. Common Lisp错误不明白
- 25. 在ideone.com上运行Common Lisp?
- 26. Common Lisp中的Stackoverflow Mergesort
- 27. ltk(common lisp)的问题
- 28. (Random)in Common Lisp Not So Random?
- 29. 的Common Lisp让结合
- 30. 子列表Common Lisp中
嗯,这很有趣。过去一个小时我一直在玩循环:P它的好东西!我喜欢编程语言有这些嵌入式子语言,它们有自己的语法和一套要理解的规则,比如格式化字符串。循环是强大的东西! – nullpointer 2009-10-26 20:47:14
欢迎来到黑暗之城。 – huaiyuan 2009-11-05 20:50:13