函数式编程是否可称为面向数学的编程?以及胡思乱想

2016-11-11 03:03:50 +08:00
 sensui7
突然觉得 oo 适合组织代码,最终解决“现实问题(双关)”,靠的还是数学知识,而函数式似乎是建立在数学思想上的,到处都体现着数学概念的实现。
是否可以说函数式就是面向数学的编程。

比如说“生成器”,以前不是太理解,教程往往这么解释,什么几百万的元素太多,用生成器,这样省资源,挠头表情。

从数学的角度看,生成器不就是一个数列函数吗,这个函数只是产生一个数列中的值。

是否也可以说,只要有值的地方,都可以用函数代替。因为函数最终是要计算的,结果只能是一个值。而迭代器,只是一种所有值都确定的,只需要取就可以的函数。
而 lambda 表达式和函数的区别,我就不懂了,不会微积分, python 中的 lambda 表达式在我看来就是匿名函数,它特殊的地方又在哪里?
lambda 计算的结果还是一个值。是否可用函数代替,
函数需要定义,和调用, lambda 表达式有定义的步骤吗,它没有名字,在 js 中匿名函数没有声明提升,说明解释器并不把他将函数对待,但它却能完成函数形式的计算,在 python 中,需要用 lambda 前缀,假如 js 解释器默默的将匿名函数在预执行阶段将它们统统提升会怎么样,显然它就等于函数了。 python 的函数没有声明提升,那是不是说所有函数都是运行时创建的?那 lambda 与函数的区别又在哪里?这只是语言实现上的问题。
lambda 所扮演的角色呢?表达式最终要被计算出一个值的,
是否可以说, lambda 表达式将普通表达式变成函数?或者说他是表达式形式的函数?

最终的结果就是值跟表达式都可以用函数代替?表达式其实就是计算,也就是说数据和计算都可以用函数代替。

那么程序是否只剩下语句和函数了?

完了,我好像走火入魔了,我得赶紧找点函数式理论书籍了。
1391 次点击
所在节点    问与答
5 条回复
eccstartup
2016-11-11 03:09:27 +08:00
函数式编程是有实在定义的,数学是没有实在定义的。
面向数学的编程,扯太大了,没什么意义
sensui7
2016-11-11 03:12:15 +08:00
@eccstartup 我只是在做一些思考,并不是纠结名字,况且数学怎么会没有定义呢?
Miy4mori
2016-11-11 03:16:19 +08:00
Python 的函数式……聊胜于无……
eccstartup
2016-11-11 03:17:28 +08:00
@sensui7 什么是数学,是有答案的。数学是什么,定义很模糊

找个函数式编程语言看看,时间长了这些困惑都理解了
Haskell Clojure APL 这些都可以,推荐 Haskell
https://www.haskell.org/
SoloCompany
2016-11-12 03:08:18 +08:00
函数式编程的精髓在于高阶函数
lambda 实质就是(匿名)函数,只是更轻量更接近语句体因而使用起来更没有负担,也更有利于生成类似于 DSL 这样的高定制性语言

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

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

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

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

© 2021 V2EX