代数数据类型数据Nat = Zero | S Nat

时间:2015-12-09 18:39:31

标签: haskell

我们开始了解代数数据类型。作为一个例子,我们有:

add ::  Nat -> Nat -> Nat
add a Zero = a
add a (S b) = add (S a) b

add' ::  Nat -> Nat -> Nat
add' a Zero  = a
add' a (S b) = S (add' a b)

那是什么意思?好吧,添加一个Zero = a我想它很清楚。 但是添加一个(S b)= add(S a)b?并添加'?

非常感谢你;)

1 个答案:

答案 0 :(得分:3)

假设您正在教孩子如何添加只知道计数的数字。

第一: 添加3和2等于添加4和1,等于添加5和0,我们知道答案是5。

第二: 添加3和2后,在添加3和1之后找到下一个数字,这是在添加3和0之后的下一个数字。因此,答案是在3上计数两次。