LdBeth
2020 年3 月 20 日 10:39
22
纵向得看 pre Common Lisp 的 LOOPS 和 Flavors,EuLisp 的 TELOS,和 AMOP
The LOOPS Manual
Reference Guide to Symbolics Common Lisp: Language Concepts
An implementation of Telos in Common Lisp
A Metaobject Protocal
橫向对比 Eiffel, Smalltalk, Sather, BETA
Object-Oriented Programming: A CLOS Perspective
A Theory of Objects
模式是沒有模式的。不同项目写的 Lisp 代码区別相当大。Peter Andrews, Robert Constable, Peter Norvig, Guy Steele 我看过他们写的 Lisp 风格可以说是各不一致,对 CLOS 的取舍更是完全不同。反正对模式我是沒有什么执念的。
真不知道要怎么设计去套用 Design Patterns 也沒什么问题。肯从现成代码学习的话推荐 robert-strandh (Robert Strandh) · GitHub 的项目,风格相当成熟,不是青头可以比的,而且是重度偏好用 CLOS 的现代范例,沒有 90 年代用 CLOS 写的老项目的 code smell。还有 Shinmera (Nicolas Hafner) · GitHub 相对 conservative 的,比较朴实的风格。
但是说实也可以放弃 design pattern 用偏向 functional programming 的写法,只要搞懂 method combination (比如看完 AMOP),然后把 multiple dispatch 当成 polymorphic function 来写就行了。
5 个赞
The Little Schemer这本书挺有名,除了第九章的Y 组合子需要花点时间,其它的难度倒不是很大。
但它的后续版本,The Seasoned Schemer 和The Reasoned Schemer好像没它那么有名。
我不清楚的一点是,它后续篇的内容是不是,大部分在SICP里能找到?
谁给解释一下
yfzhe
2020 年4 月 20 日 02:23
24
不是,The Little Schemer 和 The Seasoned Schemer 还可以说是介绍通用的编程理念。后面的 The Reasoned Schemer, The Little Prover, The Little Typer 都是对一个特定的领域进行介绍,和 SICP 没有什么重复度(虽然这些书我都没怎么看过)
好的,非常感谢。这样的话,我先把 The Seasoned Schemer看完再继续SICP吧。听说,大部分人只学习到SICP的第三章。也就是说,后面两章过于理论化的原因?
Uhuru
2020 年4 月 21 日 06:45
26
个人觉得Little Schemer中讲applicative Y combinator的部分讲的并不好,这可能是出于对幼龄读者的一种理解上的处理,但是对于成年的读者来说其实没有很大的必要。
作为入门书籍(给大一计算机系新生或者有这方面兴趣的孩子)我觉得是很好的,但是对于成年读者专业读者来说,有些许啰嗦。
LdBeth
2020 年4 月 21 日 08:04
28
你说的是 JS 函数式开发,和函数式编程有什么关系么?
Uhuru
2020 年4 月 21 日 08:07
29
不都是从wiki上先学一下lambda calculus开始的么,应该是理论先行吧。。。
还是说我的路线出现了偏差。。。
LdBeth
2020 年4 月 21 日 08:10
30
一般不该从 cartiain closed category/simply typed lambda calculus 开始么,pure untype lambda calculus 对学现在多数编程语言没什么用。
Uhuru
2020 年4 月 21 日 08:12
31
啊!(一个啊字体现出了菜鸡无限的敬仰与懊悔)
原来是这样!
这正是我要表达的意思,若js已经很熟练了就用js,或者用其他比较熟悉的语言,不然搞不清学习的重点。
我也认为是理论优先,并用自己擅长的语言来实践,比较节省时间。
对于一个Scheme的初学者,开始学习的时候,很难分辨哪些需要学,哪些可以先放下。所以,会遇到很多的坎。使用,自己熟练的语言去学习,就省去这些麻烦。这是我一直迷惑,后来得出的个人看法。
yfzhe
2020 年4 月 21 日 08:37
36
同意一半:如果说学习一个概念,不一定要强行去某个语言的语境下学习,(在合适的情况下)也可以通过自己熟悉的语言学习。
不同意一半:学 Scheme 不需要学 rnrs,因为你是用各个实现来运行你的代码,而各家实现都加了自己的功能。了解 rnrs 和 srfi 唯一的用处就是在语言撕逼的时候你可以举出一些特性出来。根据我的观察,各家 scheme 实现的文档都可以用来入门。虽然我觉得入门 scheme 一下午拿着一本 The Little Schemer 就学完了。
LdBeth
拆分了此话题
2020 年4 月 23 日 07:24
39
作为纯菜鸟, 我确实觉得 little schemer 里面 Y 组合子讲的很好. 我之前听过 Y 组合子, 所以看书的时候尝试自己写一下(并没有写出来, 捂脸). 书里的详细的过程恰好可以填补一些困惑.
LdBeth:
Common Lisp Recipes
我偷藏到自己服务器了~ 《Common Lisp Recipes》
2 个赞