首页 > 其他 > 详细

函数式编程关心类型(代数结构)之间的关系

时间:2018-03-26 11:52:41      阅读:223      评论:0      收藏:0      [点我收藏+]

函数式编程关心数据的映射,命令式编程关心解决问题的步骤

我想稍微改一下,使其更数学化一点。

函数式编程关心类型(代数结构)之间的关系,命令式编程关心解决问题的步骤

函数式编程中的lambda可以看成是两个类型之间的关系,一个输入类型和一个输出类型。lambda演算就是给lambda表达式一个输入类型的值,则可以得到一个输出类型的值,这是一个计算,计算过程满足 -等价和 -规约。

函数式编程的思维就是如何将这个关系组合起来,用数学的构造主义将其构造出你设计的程序。

用Haskell来说,这个关系就是运算符(->),其表示了一个lambda演算的类型,在值的层面和符号‘\‘一起构造了一个lambda表达式。空类型()、积类型(a, b)与和类型Either a b是最基本的数据类型的构造,其和curry和uncurry一起,还有米田定理、伴随函子,使得我们可以构造任意复杂的数据类型和程序。比如Functor、Applicative、Monad/Comonad、Limit/Colimit、End/Coend、Left Kan Extenstion/Right Kan extension等。

具体的程序构造例子可以看我的回答

parker liu:Haskell中的foldl和foldr的联系?

函数式编程关心类型(代数结构)之间的关系

原文:https://www.cnblogs.com/feng9exe/p/8649843.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!