与大多数人一样,我开始使用并且仍然执行许多命令式代码(主要是Java,Ruby,Javascript)。
我从未成为OO的忠实粉丝,要么是因为我从未理解它,要么因为我不认为OO。
通过javascript第一次看到FP,传递函数,闭包等等。从那时起就爱上了FP。
最近,我对Clojure(可能是Scala)产生了兴趣,有一天甚至可能会对Haskell有所了解。我喜欢我在功能方法中看到的内容,但我如何看待功能呢?在过去3 - 4年里,我一直在做必要的事情,而我的大脑在接近问题时往往会认为势在必行。
我怎样才能忘记命令式的风格(我需要吗?)并在功能上思考更多?
答案 0 :(得分:3)
没有。不要忘记必要的风格,因为你仍然需要它。甚至许多做得好的FP库看起来都有些必要。最好考虑将FP添加到您的工具和技术列表中,而不是使用一种技术或另一种技术进行全金属。
现在,关于如何学习FP风格?玩具项目 - 或您为自己使用而编写的实用项目。或者地狱,写下你自己的另一个博客 - 但有一个转折!如上所述,关键是实践。这样做时,请避免共享状态。在尽可能多的地方努力寻求纯净(即避免副作用)。使用闭包,模式匹配(如果语言支持它)和lambda函数。根据函数是程序中的第一类数据类型 - 将它们作为输入并将它们作为输出返回。列表还在继续,但如果您正在观察它们,您会一次又一次地看到相同的概念。
如果您觉得在这方面需要轻微推动,请使用鼓励 FP样式的工具(语言),例如F#或Scala。
如果你觉得自己需要更多的“强烈的爱”帮助,那么请到达Haskell:)
否则,请使用您选择的工具,并记住FP概念(上图)。如果你决定走这条路,那就是一本名为Real-World Functional Programming的好书,它使用F#和C#来说明适用于“大多数”FP语言(F#)和“大多数”OO语言C#的技术。
答案 1 :(得分:1)
去找Haskell。因为它是纯粹的,你被迫思考功能。在F#或Scala中,您仍然可以编写非常强制性的代码。我强烈推荐Graham Hutton关于Haskell的书。