有没有函数式编程比较经典的实践?

2021-02-24 11:09:16 +08:00
 James369
一直以来都用 OOP 来设计和编写软件,很容易建模也很自然。

不过最近多处看到函数式编程,所以就查了一下,但是还是没搞懂,在我看来好像就是函数作为参数传递,想不出来它是怎么来构建一个软件系统。
所以想问下,有没有比较好的函数式编程应用的 案例、项目、或框架之类的。

谢谢!
2514 次点击
所在节点    问与答
10 条回复
zxCoder
2021-02-24 12:00:41 +08:00
感觉只是个噱头 没啥**大的**实用性
SuperMild
2021-02-24 12:09:44 +08:00
纯函数式写起来爽,但读代码、维护时就比较考验智商了。
masquerader
2021-02-24 12:11:42 +08:00
函数作为参数传递,只是函数式编程的一个很小的特性,即所谓的“高阶函数”,Higher Order Functions 。高阶函数用的得心应手的话已经可以让编程过程流畅愉悦很多了。
OOP 有一整套关于设计的实践,比如“设计模式”之类,对应的函数式也有一整套关于设计的实践,后面你会看到 Functors/Monads 之类的术语,不要看很多装逼书说的必须要懂范畴论之类的扯淡话,找几个靠谱的网站,一本好一点的书就能学透了。
如果你不挑语言的话,看看这篇文章大概了解下 FP 的一些设计模式做个入门,后面把这个网站所有内容翻一遍,FP 你能了解个大概了。
https://fsharpforfunandprofit.com/fppatterns/
SuperMild
2021-02-24 12:12:15 +08:00
对函数式感兴趣的推荐看看这个 https://fsharpforfunandprofit.com
mmdsun
2021-02-24 12:34:41 +08:00
《 Functional and Reactive Domain Modeling 》 函数响应式领域建模可以看这个书籍。

框架 Reactive Extensions,Akka,Spring Reactive webflux 。

重点是 Reactive 不是 Functional 。

Reactive 思想可以参考 msdn 文档,最早是微软搞出来的思想
bignullnull
2021-02-24 13:58:03 +08:00
试试 erlang
iahu
2021-02-24 14:20:01 +08:00
FP 在实践中的主要作用是,因为遵循了纯函数、状态无副作用等核心规则,从而可使各个模块间的关系独立,状态易追踪,从而提高代码的可替换性和稳健度。

而在过程中会把一个复杂的工程分解成了多个相互独立不依赖的子任务,也可降低工作复杂度。

另外理解了其思想,对模块的依赖关系 /接口设计也有所帮助。

关于上面有人提到的可读性,其实用什么范式写代码都有可能存在可读性差的问题,而使用 FP 范式有可能很好读。FP 对于函数的组织方式是比较讲究的,有很多套路和技术方法专门针对函数组织方式,以使代码很可读、可维护。
edwardwo
2021-02-24 15:14:38 +08:00
FP 中的一个重要概念就是 data immutability. React, Redux 就是充分发挥 FP 的思想, 由于 React component 中的 state object 一旦建立是不能直接修改(immutability), 要修改, 只能通过 FP 的一些工具(如: Reducer)生成一个新 object, 这样方便页面知道何时需要渲染.
看看 Redux 源码就基本心里有谱了.
Jirajine
2021-02-24 15:24:52 +08:00
暂时忘掉你所知的 OOP 和命令式的编程语言,然后学一下 haskell 。
chihiro2014
2021-02-24 15:35:59 +08:00
比如 excel ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/755754

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX