函数式编程的本质:函数式编程关心类型(代数结构)之间的关系--什么是函数式编程思维?
编程 函数 -- 什么 类型 结构 关系 之间
2023-09-11 14:18:45 时间
函数式编程关心数据的映射,命令式编程关心解决问题的步骤
我想稍微改一下,使其更数学化一点。
函数式编程关心类型(代数结构)之间的关系,命令式编程关心解决问题的步骤
函数式编程中的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.zhihu.com/question/28292740
相关文章
- Go语言编程--读后感
- [Google Guava] 4-函数式编程
- mysql的sql编程
- JAVA编程思想读书笔记(二)--容器
- 【整理】Socket编程之非阻塞connect(一)
- 快学Java SE8--Java8函数式编程(一)
- 揭开SAP Fiori编程模型规范里注解的神秘面纱 - @OData.publish工作原理解析
- Atitit 函数式编程与命令行语言的区别与优缺点 目录 1. 常见的函数式语言2 1.1. 命令行 bat2 1.2. Sql h5 css 正则表达式2 1.3. 工作流语言 anno注
- Paip.声明式编程以及DSL 总结
- 编程笔试(解析及代码实现):求不重复数字之和给定一组整型数字,里面有且仅有两个数字值出现了一次,其他的数字都出现了两次。请写出程序求出这两个只出现了一次的数字之和
- Python学习87:网络编程
- Python编程:socket实现udp通讯
- Python编程:time模块实现函数执行时间计时器
- 软件架构设计的核心:抽象与模型、“战略编程”
- 函数式编程与面向对象编程[3]:Scala的OOP-FP混合式编程与抽象代数理论
- 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 分析使用 MetaClass 进行方法注入前后 mateClass 类型变化 )
- 【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 动态拦截函数 | 动态获取 MetaClass 中的方法 | evaluate 方法执行Groovy脚本 )
- 函数式编程之pipeline——很酷有没有
- Linux【实操篇】—— Shell函数、Shell编程综合案例(定时备份数据库)
- 【Spring6】| 面向切面编程AOP(文末书籍一本免费奉上)
- C++编程经验(3):别让异常逃离虚构函数!!!
- 关于《剑指offer》的66道编程题的总结(七----本系列结束)