【发布时间】:2011-05-25 02:16:38
【问题描述】:
我对 Scheme 非常感兴趣,并从一些玩具编程示例开始,正在阅读 Paul Graham 的 On Lisp。
我找不到一本书或网站,旨在向“OO 人”教授 Scheme,即像我这样的人,他们 99% 的编码都是用 c++/Java/Python 完成的。
我看到闭包是一种对象-y,因为它们具有本地状态,并提供一个或多个可以访问该状态的函数。但我不想学习 Scheme 只是为了将我现有的习惯移植到它上面。这就是我现在学习 Scheme 而不是 Common Lisp 的原因;我担心 CLOS 可能只是我现有的 OO 习惯的拐杖。
理想的情况是一本书或网站,提供以面向对象语言和以 Schemey 方式在 Scheme 中解决的问题的案例研究。我想我最欣赏科学计算和/或计算机图形问题,但任何事情都可以。
任何教学线索将不胜感激。
【问题讨论】:
-
我不认为你会找到这样的东西。当大多数人学习一门新语言时,他们会尝试从该语言的角度来学习它,而不是从另一种语言的角度来学习。此外,OOP 远比函数式复杂。查看 The Little Schemer 或 SICP
-
我怀疑 CLOS 会成为旧习惯的拐杖,我发现它与 C++/Java/Python 中的 OO 风格有很大不同,而且非常有趣。我不了解所有细节,但我会推荐 Peter Seibel 的 Practical Common Lisp。如果您正在阅读 On Lisp 没有太多麻烦,您应该能够深入了解chapters introducing CLOS in PCL。另外,我推荐他的 Google Tech Talk 比较 Java 和 Common Lisp。
-
@Rafe 你会从阅读我的帖子中发现,从它自己的角度学习 Scheme,而不是移植我的 OO 思维模式,正是我想要做的。我希望通过查看针对同一问题的 OO 和 Scheme 解决方案示例来引导这个过程,尤其是当它们看起来非常不同时。
-
我认为这是一个有效的观点。正是因为它的 OO 是如此不同,所以它可能是一个问题。在大多数语言中,您定义类,然后在它们上定义方法—— Peter 明智地扭转了这一点,首先执行泛型函数,
defclass在下一章。显然这是 Lisp 程序员常去的地方:xach.livejournal.com/275444.html -
感谢@spacemanaki 提供了很好的链接。如果您重新发布作为答案而不是评论,我会选择它作为此问题的答案。
标签: oop functional-programming lisp scheme idioms