Open xxleyi opened 3 years ago
https://www.youtube.com/watch?v=w1WMykh7AxA&list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_&index=10
何为代数数据类型,就是可以使用代数运算定义的数据类型。
那何为代数?
代数的对象是各种抽象结构,基本思想是研究对抽象结构进行加法和乘法时,会发生什么。
比如可以用加法和乘法这两种代数运算定义 list 这种数据类型:
data List a = Nil | Cons a (List(a))
对应的代数方程是:list(a) = 1 + a * list(a)
list(a) = 1 + a * list(a)
代数方程的解是:1 + a + a * a + a * a * a + a * a * a * a + ...
1 + a + a * a + a * a * a + a * a * a * a + ...
这就是 list 数据类型:空 list + 有一个元素的 list + 有两个元素的 list + 有三个元素的 list + 。。。
https://www.youtube.com/watch?v=w1WMykh7AxA&list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_&index=10
何为代数数据类型,就是可以使用代数运算定义的数据类型。
那何为代数?![image](https://user-images.githubusercontent.com/12626454/109412506-4b222c80-79e3-11eb-8c44-7e78dd682c8a.png)
代数的对象是各种抽象结构,基本思想是研究对抽象结构进行加法和乘法时,会发生什么。
比如可以用加法和乘法这两种代数运算定义 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 + 。。。