在具有多种数据类型的ADT上进行更简洁的模式匹配?

时间:2014-09-15 01:43:14

标签: haskell

我们说我有以下代数数据类型:

data Foo = Bar Int | Baz Int | Bippy

我正在编写一个函数,给定Foo,除Bippy之外的任何内容都返回True。

有没有比所有数据类型的模式匹配更简洁的方法来实现这个功能?

f :: Foo -> Bool
f (Bar _) = True
f (Baz _) = True
f Bippy = False

在这个例子中,它只花了3行代码。但是,如果我有10种数据类型怎么办?

1 个答案:

答案 0 :(得分:6)

怎么样

f :: Foo -> Bool
f Bippy = False
f _ = True

并且您没有3种数据类型,您有1种数据类型的构造函数