0

这是 Haskell 中的递归数据结构,它是如何工作的?

data Expression
     = Var Variable
     | Num Integer
     | Plus  Expression Expression
     | Minus Expression Expression
     | Times Expression Expression
     | Div   Expression Expression

data Variable = A | B

Minus (Plus (Var A)(Var B)) (VarB): 这个表达式是如何工作的?

4

1 回答 1

1

通过将其子部分与相应数据构造函数的类型递归匹配:

Minus    (Plus (Var A) (Var B))    (Var B)
Minus ::      Expression   ->     Expression  -> Expression

Plus           (Var A)             (Var B)
Plus  ::      Expression   ->     Expression  -> Expression

Var               A
Var   ::       Variable                       -> Expression

Var               B
Var   ::       Variable                       -> Expression

A     ::       Variable

B     ::       Variable
于 2012-08-21T10:41:17.143 回答