如何测试异构数据构造函数?

时间:2016-09-08 20:18:48

标签: haskell

似乎是一个非常基本的问题,但如果我有:

data LogLevel = Info | Warning | Error Int
x = Info
y = Error 13

我可以写

if (x==Info)

但是如何为类型Error编写测试?

1 个答案:

答案 0 :(得分:7)

Error不是一种类型;它是一个数据构造函数。您可以使用模式匹配来区分LogLevel类型的各种值。

case x of
  Info -> ...
  Warning -> ...
  Error n -> ...

此处,您不仅会根据x的值采用正确的“分支”,还会获得与Error相关联的特定整数(在n中)模式匹配。