计算传入Haskell构造函数的值的数量

时间:2016-02-05 14:39:39

标签: haskell

假设我有一个数据类型

data Foo = Foo String Bool | Bar (String->Bool)

我想要一个函数f:

f (Foo _ _) = [String, Bool]
f (Bar _) = [String->Bool]

特别是,我希望这个函数神奇地知道Foo和Boo是构造函数,而不是给我任何一个

f (Foo _ _)  = [String -> Bool] -- #Don't want this!!!!
f (Boo _)  = [String, Bool] -- #Don't want this!!!!

我该怎么做?我知道我可以使用Data.Data打印ADT记录列表,但我无法弄清楚如何打印类型名称列表。

(如果这是不可能的,我会选择一个函数f',它接受ADT并输出它是否有0个参数。

f'(Foo _ _) = False
f'(Bar _) = False

即使我没有将记录分配给AD操作,我也希望这个能够工作。)

0 个答案:

没有答案