当我试图增加我对函数式编程的知识时,我发现很难从函数的角度重新设想我用OOP语言解决的问题的解决方案,特别是在涉及小部件的情况下。像Project和4Clojure这样的站点对于学习核心函数和操作原始数据的技术非常有用,但我真正想要的是一个资源,讨论如何将OOP构造具体转换为FP,并特别注意如何识别何时以及如何使用状态。(要使用一个具体的例子,在Clojure中实现钢琴键盘的最佳方法是什么?)
发布于 2013-08-12 14:54:20
我知道两本可能有用的书:
题名/责任者:面向对象程序员的函数式编程 /E/C/E/E.
"Clojure程序设计“由查斯爱默里克,布赖恩卡珀和吉尔斯托波格兰德。第12章是关于如何将面向对象的设计模式“转换”到Clojure。
发布于 2013-08-12 14:51:30
我真正想要的是一个资源,讨论如何将OOP构造具体地转换为FP。
不,那是个经典的XY问题。
我讨厌类比,但在工程学中,一个类似的说法可能是,你已经掌握了金属制品,并希望通过在塑料中重新创造出相同的形状来学习塑料。在现实中,你永远不想把你所知道的转化为你正在学习的东西。您真正想做的是学习如何使用新技术解决熟悉的问题。回到工程方面,良好的塑料设计与金属设计的形状不同。在编程方面,使用一种范式构建的解决方案永远不会很好地转化为另一种模式。你应该从头开始重新解决问题。
发布于 2013-08-12 14:40:11
我不知道有哪一本书会教我们如何将OOP构造转换成功能结构。只要给自己一些时间,你就会掌握这些功能成语。
不要试图在OOP代码和FP代码之间映射。学习一门语言(口语)的最好方法是让自己沉浸在语言中,并思考它。编程语言也是如此。
三年前我开始学习Clojure。当时,我甚至不知道什么是Lisp,什么是函数式编程语言。我说:嗯?那到底是什么?我能用Lisp做些有用的事吗?我读了很多书,学了很多,更好的是,我在Clojure找到了一份工作!
现在用函数式语言编程对我来说是自然的,这是有意义的。在数据结构和函数中编程是我所需要的。简单!
需要记住的一点是,函数式编程语言在默认情况下并不困难,而OOP语言在默认情况下并不容易。
https://stackoverflow.com/questions/18189447
复制相似问题