函数式编程functional programming的特点

发布于 2022-09-10 03:53:10 字数 772 浏览 18 评论 2

以Erlang为代表的面向功能语言functional programming(FP)越来越热门,虽然本身有比较难学等缺点,
Where functional programming fits in一文总结总结了FP适合哪些场合?

Java平台的Scala,.NET的F#都是FP语言,而Ruby因为包含一些FP特点受到欢迎。
FP特点:
1.FP代码没有边界影响“side effects.”(目的明确,是一就是一,不会因为捣蛋鬼调用导致其他功能实现)
2.没有literal值, 简单的功能只是返回相同值。
3.许多FP语言有“lazy evaluation,”(类似懒加载机制),功能并不真正运行,直到他们被调用,比如你定义x = y +5,只有当x被使用时,才真正计算y+5,这个带来更好的性能boon和curse (有时不确定值),(注:这个和我们之前讨论的异步Domain Events好像类似,模型的值只有即时使用才访问数据库获得,我们也是为了获得更好地性能,见Domain Events异步应用)

FP语言的这些特性代表了思想的根本转变,但是使用FP语言,必须考虑是不是存在过度工程或overthinking的问题,因为这代码的其他维护者需要学习一个新的语言。

作者认为FP语言使用在算法应用领域比较好,在Xbox Live排名系统中,用F#替代C#重写,只用了10% 的代码量,节约了近90%的代码。

如果你使用现代主流的胶水库library glue code之类应用,如果你的代码是由一个个类组成的结构,而算法只是被融合在这些类之中,就没有必要使用FP语言。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

愁以何悠 2022-09-10 20:03:19

通篇不提 Haskell 一个字,打回去重写。

空气里的味道 2022-09-10 15:52:43

pure fp才是no side effect
scala不是pure的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文