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 に答える