作者noctem (noctem)
看板PLT
标题Re: [连结] 贴一个lazy eval的连接﹐非常浅显易懂。
时间Wed Mar 21 15:04:21 2007
确实是因为很忙,看了之後拖了很久才回... :)
※ 引述《caml (suitengu)》之铭言:
: http://www.lassila.org/blog/archive/2006/05/fun_with_lazy_e_1.html
: 各位可以用sbcl, 或clisp试一下。
我仅是大略地看过一遍,蛮有意思的。感觉上这篇谈的是让
串列的 constructor 成为 lazy 的。补充一下:
1. Scheme 也有 delay/force 的成对「函数」. 不过追根究底
好像还是用 macro 做出来的。做 delay 的方法就是把运算
包到一个函数里去。随手找到一些资料:
http://oldwww.cs.aau.dk/~normark/prog3-03/html/notes/
eval-order_themes-delay-stream-section.html
Lisp 和 Scheme 对於 closure 的处理「好像」有所不同,
不知道 Lisp 的 delay/force 是否也这样做。
2. 关於 lazy evaluation 有几派做法:
a. 语言还是以 eager evaluation 为预设,认为如果需要
lazy evaluation 的话另外实作即可。例如 Scheme.
b. 只把 lazy evaluation 做在资料结构里面。caml 提供的
这篇好像就是以这个方向为例?
c. 认为把 lazy evaluation 当作预设还是有好处。例如
Haskell.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.109.20.217
1F:推 caml:common lisp也是eager eval. 也许common lisp要标准化的函数 03/21 16:58
2F:→ caml:太多﹐所以没有收录delay和force。 03/21 17:00
3F:推 godfat:其实我一直在想,Lisp 好像没什麽是不能模拟的? 03/22 20:20
4F:推 caml:lisp虽然很flexible, 但是没人用。 呵呵 03/23 13:26
5F:推 buganini:有人用啊...只是比较少 03/23 19:35
6F:→ buganini:Maxima就是Lisp写的 03/23 19:36
7F:推 yago01:Maxima 该不会是电脑代数软体? 03/30 14:07