计算(Computation)即常规化(Normalization)

        一个表达式(Expression)的计算过程即是其常规化(Normalization)的过程,最终结果为某个类型的元素,即该表达式的值(Value)。

        在《类型(Type)是可构建集合(constructive set)》 一文阐述了,每个类型都定义了其元素是如何构建的,即可以通过该元素的构建过程来定义该元素。

        如,自然数 Nat,由两个构建函数组成,记为,

zero : Nat 和 successor: Nat -> Nat

        那么,自然数 0, 可表示为 zero;1 为 successor( zero );2 为 successor(successor( zero )) 等等。

        注:zero 可以看作为零输入的函数。

        那么,自然数的加法可以定义为

def add (a: Nat, b: Nat) -> Nat :=

        | (zero, b) => b

        | (successor (na) , b ) => add ( na, successor (b) )

        也就是,两个自然数, a,b,相加,当 a 等于 0 时,其结果为 b;当 a 不等于 0时,即 a 为某个自然数(na)的后继者(successor)时,其结果为 na 与 b 的后继者 ( successor(b) ) 之和。

        那么,该加法计算的过程,其实,就是对于 加法表示式,add ( a, b ),的常规化的过程,即根据函数的定义,重复调用自然数的构建函数,使得最终的结果,是其类型中通过其构建函数构建出来的元素,即该类型的正规元素(canonical element)。

你可能感兴趣的:(类型系统与类型理论,开发语言,swift,其他)