突然觉得 oo 适合组织代码,最终解决“现实问题(双关)”,靠的还是数学知识,而函数式似乎是建立在数学思想上的,到处都体现着数学概念的实现。
是否可以说函数式就是面向数学的编程。
比如说“生成器”,以前不是太理解,教程往往这么解释,什么几百万的元素太多,用生成器,这样省资源,挠头表情。
从数学的角度看,生成器不就是一个数列函数吗,这个函数只是产生一个数列中的值。
是否也可以说,只要有值的地方,都可以用函数代替。因为函数最终是要计算的,结果只能是一个值。而迭代器,只是一种所有值都确定的,只需要取就可以的函数。
而 lambda 表达式和函数的区别,我就不懂了,不会微积分, python 中的 lambda 表达式在我看来就是匿名函数,它特殊的地方又在哪里?
lambda 计算的结果还是一个值。是否可用函数代替,
函数需要定义,和调用, lambda 表达式有定义的步骤吗,它没有名字,在 js 中匿名函数没有声明提升,说明解释器并不把他将函数对待,但它却能完成函数形式的计算,在 python 中,需要用 lambda 前缀,假如 js 解释器默默的将匿名函数在预执行阶段将它们统统提升会怎么样,显然它就等于函数了。 python 的函数没有声明提升,那是不是说所有函数都是运行时创建的?那 lambda 与函数的区别又在哪里?这只是语言实现上的问题。
lambda 所扮演的角色呢?表达式最终要被计算出一个值的,
是否可以说, lambda 表达式将普通表达式变成函数?或者说他是表达式形式的函数?
最终的结果就是值跟表达式都可以用函数代替?表达式其实就是计算,也就是说数据和计算都可以用函数代替。
那么程序是否只剩下语句和函数了?
完了,我好像走火入魔了,我得赶紧找点函数式理论书籍了。
是否可以说函数式就是面向数学的编程。
比如说“生成器”,以前不是太理解,教程往往这么解释,什么几百万的元素太多,用生成器,这样省资源,挠头表情。
从数学的角度看,生成器不就是一个数列函数吗,这个函数只是产生一个数列中的值。
是否也可以说,只要有值的地方,都可以用函数代替。因为函数最终是要计算的,结果只能是一个值。而迭代器,只是一种所有值都确定的,只需要取就可以的函数。
而 lambda 表达式和函数的区别,我就不懂了,不会微积分, python 中的 lambda 表达式在我看来就是匿名函数,它特殊的地方又在哪里?
lambda 计算的结果还是一个值。是否可用函数代替,
函数需要定义,和调用, lambda 表达式有定义的步骤吗,它没有名字,在 js 中匿名函数没有声明提升,说明解释器并不把他将函数对待,但它却能完成函数形式的计算,在 python 中,需要用 lambda 前缀,假如 js 解释器默默的将匿名函数在预执行阶段将它们统统提升会怎么样,显然它就等于函数了。 python 的函数没有声明提升,那是不是说所有函数都是运行时创建的?那 lambda 与函数的区别又在哪里?这只是语言实现上的问题。
lambda 所扮演的角色呢?表达式最终要被计算出一个值的,
是否可以说, lambda 表达式将普通表达式变成函数?或者说他是表达式形式的函数?
最终的结果就是值跟表达式都可以用函数代替?表达式其实就是计算,也就是说数据和计算都可以用函数代替。
那么程序是否只剩下语句和函数了?
完了,我好像走火入魔了,我得赶紧找点函数式理论书籍了。