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

Roy*_*oyM 1 haskell

看起来像一个非常基本的问题,但如果我有:

data LogLevel = Info | Warning | Error Int
x = Info
y = Error 13
Run Code Online (Sandbox Code Playgroud)

我可以写

if (x==Info)
Run Code Online (Sandbox Code Playgroud)

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

che*_*ner 7

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

case x of
  Info -> ...
  Warning -> ...
  Error n -> ...
Run Code Online (Sandbox Code Playgroud)

在这里,您不仅会根据值x获取正确的"分支" ,还会在该模式匹配时获得与Error(in n)关联的特定整数.