《同构——编程中的数学》笔记

发布时间 2023-11-11 22:55:48作者: 马农一号

第1章-数字

1.4-自然数的结构

\[f(n) = foldn(c,h)(n) \]

我对这个符号的理解是,以c为初始值,对初始值进行n次的h操作。

许多东西都可以由这个记号定义,例如自然数序列:
\(n = 0, h = succ\) (succ表示后继),则

n f
0 0
1 succ(0) = 1
2 succ(succ(0)) = 2
3 succ(succ(succ(0))) = 3
... ...

而对于这个记号,更重要的是它描述了与自然数同构的某种事物。

比如定义操作 \((+m)\)

\[(+m) = foldn(m, succ) \]

n (+m)
0 m
1 succ(m) = 1+m
2 succ(succ(m)) = 2+m
3 succ(succ(succ(m))) = 3+m
... ...

定义操作 \((· \ m)\)

\[(\cdot \ m) = foldn(0, (+m)) \]

n (· m)
0 0
1 0 + m = m
2 0 + m + m = 2m
3 0 + m + m + m = 3m
... ...

定义操作 \(m^{( \ )}\)

\[m^{( \ )} = foldn(1, (\cdot \ m)) \]

n \(m^{( \ )}\)
0 1
1 1 · m = m
2 1 · m · m = m²
3 1 · m · m · m = m³
... ...