我在哪里可以找到一个在功能与OO风格中实现系统的好例子

时间:2014-04-23 18:07:39

标签: clojure

我已经开始尝试使用Clojure,我对它的功能印象深刻。但是,我不认为我真的有过这样的事情。功能编程设计。我的背景是在Smalltalk中,这使我对设计的看法变得如此。我想真正理解FP与OO的不同之处,一种方法是对解决方案进行良好的并列比较。

我不认为问题需要那么复杂。也许这足以说明FP如何实施典型的银行账户问题?

有没有人知道合适的资源?

2 个答案:

答案 0 :(得分:1)

我认为大多数关于Clojure的书都会有一个简单的银行帐户程序,我将其视为一个状态得到更新的小型数据库。例如,Halloway和Bedra的 Programming Clojure 有一个跟踪音乐录音的程序。当您阅读该程序的描述时,您将立即看到如何将其映射到OO解决方案。但是,我不认为你会去"得到" FP来自这样一个简单的例子。 编程Clojure 也有功能性蛇游戏。你可以把它与OO蛇游戏进行比较。 (我不推荐编程Clojure ;它是一本值得推荐的书,但我认为它有很多缺陷。它恰好是我最了解的Clojure书。很多然而人们似乎喜欢它。)

我建议采用另一种策略,可能作为你的补充,用于移植FP:阅读一些介绍,让你沉浸在FP世界观中。我最喜欢的是Friedman和Felleisen的 The Little Schemer 。它使用Scheme,而不是Clojure,但这些想法可以转化。有一个Clojure website devoted to it,但我建议按照它推荐的方式阅读原始书籍,随时覆盖页面的各个部分。我认为这本让我理解FP部分超越 The Little Schemer 的书,延伸到你在Clojure世界中找到的大部分内容,是Bird的使用Haskell进行功能编程。不过,我觉得有趣的是暗示了一本Haskell的书。为什么不是Clojure书呢?好吧,也许其中一本Clojure书籍会有相同的效果,在FP思维方式中给你一个纯粹的洗礼,但是我读过的Clojure书籍( PC The Clojure的喜悦),虽然非常好的书籍,但在某种程度上不太沉浸式 - 可能是因为它们更实用。另一方面, P.C (可能还有其他一些Clojure书籍)主要面向OO程序员,因此实际上可能就是你想要的。

答案 1 :(得分:0)

从Smalltalker的角度对Clojure进行了一些随机观察。

  • Clojure数据结构将提醒您Smalltalk的集合类,但不变性/持久性需要一些习惯。
  • 您已使用do及其亲属缩写控制结构。你会发现,懒惰的序列库(mapreduce和其余的)为你提供了另一种力量和简洁。
  • 您已经习惯于将代码编写成小块。这些碎片会变小,会有更多碎片。

但是

  • Clojure不如Smalltalk纯净:不是一切都是对象。
  • 没有像精彩的Smalltalk浏览器那样标准。

如果你喜欢Smalltalk,你会喜欢Clojure。