其他分享
首页 > 其他分享> > Plain Functional Programming by Martin Odersky - 笔记

Plain Functional Programming by Martin Odersky - 笔记

作者:互联网

Plain Functional Programming by Martin Odersky - 笔记

前言

来自 @演讲: Plain Functional Programming by Martin Odersky

软件工程中最大的挑战是什么?

最大的挑战是复杂性, 复杂性可能来源于需求的变化, 开发者的变动, 态度 等等
在这里插入图片描述

为什么需要函数式编程?

因为函数式编程在复杂性管理方面, 移除了复杂性中的一个重要的维度: 查看历史代码.
在这里插入图片描述

为什么 Scala 和 Haskell 看起来不像是简单的语言?

语法数量如下图所示: 所谓大道至简.
在这里插入图片描述
函数式编程是另外一种范式, 没有以前的经验, 所以看起来比较难
在这里插入图片描述
在这里插入图片描述

函数式编程家族

在这里插入图片描述

函数式编程的好处

“函数式编程就是把所有东西都参数化”
在这里插入图片描述
但是这样会带来问题
在这里插入图片描述
一种解决方案是使用Monad进行抽象
在这里插入图片描述

例子: 配置

使用 Kleisli 和 Arrow 来构建一个读配置的程序

在这里插入图片描述

当参数的太多的时候, 使用隐式参数来简化

但是隐式参数太多也会导致问题
在这里插入图片描述
解决办法是, 声明一个隐式函数类型
在这里插入图片描述
在这里插入图片描述
这个 Configured[T] = implicit Config => T 就是带隐式参数的函数, 这样我们就可以把代用隐式参数的函数转换成 Configured[T] 类型了
在这里插入图片描述

代数效应: 多个隐式参数函数类型顺序可以任意变换, 类似于集合 , 比如 下面的Possibly[Configured[A]]Configured[Possibly[A]] 是一样的
在这里插入图片描述
相比于 Kleisli, 隐式函数类型可以省略很多参数
在这里插入图片描述
在这里插入图片描述

构建者模式

在这里插入图片描述
scala 的实现方式
在这里插入图片描述

总结

在这里插入图片描述

标签:Odersky,函数,Plain,Configured,编程,Programming,参数,Martin,隐式
来源: https://blog.csdn.net/sparrowxin/article/details/113788715