在Haskell中定义数据类型

时间:2015-02-22 23:12:23

标签: haskell types

我在编程语言类中为Haskell赋值(创建基本语言W)提供了以下数据类型:

data WValue = VInt Int 
        | VBool Bool 
          deriving (Eq, Show)

data WExp = Val WValue
      | Var String
      | Plus WExp WExp
      | Minus WExp WExp
      | Multiplies WExp WExp
      | Divides WExp WExp
      | Equals WExp WExp
      | NotEqual WExp WExp
      | Less WExp WExp
      | Greater WExp WExp
      | LessOrEqual WExp WExp
      | GreaterOrEqual WExp WExp
      | And WExp WExp
      | Or WExp WExp
      | Not WExp

data WStmt = Empty
       | VarDecl String WExp
       | Assign String WExp
       | If WExp WStmt WStmt
       | While WExp WStmt
       | Block [WStmt]

我的问题 - 可能是愚蠢的 - 我是否需要为所有数据类型定义所有值构造函数,或者,如果,例如,定义最高级别的数据类型(在本例中为WStmt),足以使其余的数据类型以某种隐式方式工作。

0 个答案:

没有答案