xxleyi / learning_list

聚集自己的学习笔记
10 stars 3 forks source link

5.2 Algebraic data types #302

Open xxleyi opened 3 years ago

xxleyi commented 3 years ago

image image image

https://www.youtube.com/watch?v=w1WMykh7AxA&list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_&index=10

何为代数数据类型,就是可以使用代数运算定义的数据类型。

那何为代数? image

代数的对象是各种抽象结构,基本思想是研究对抽象结构进行加法和乘法时,会发生什么。

比如可以用加法和乘法这两种代数运算定义 list 这种数据类型:

data List a = Nil | Cons a (List(a))

对应的代数方程是:list(a) = 1 + a * list(a)

代数方程的解是:1 + a + a * a + a * a * a + a * a * a * a + ...

这就是 list 数据类型:空 list + 有一个元素的 list + 有两个元素的 list + 有三个元素的 list + 。。。