所以我定义了一个基本列表的类型,我可以解决如何使其变为多态的问题。 到目前为止我已经
了module ListTup where
type ListTup = [(Char, String)]
我想知道是否有可能使Char部分成为e.i String,int。 可能吗? 我尝试使用Maybe Type但是我的方式会产生大量错误
答案 0 :(得分:8)
您可以在定义类型同义词时包含类型变量,如下所示:
type ListTup a = [(a, String)]
。
答案 1 :(得分:0)
这取决于你想做什么。如果你想要不同的列表,每个列表在元组的第一个元素中具有相同的类型,你可以参数化类型构造函数,就像上面提到的C.Quilley一样。
如果您希望每个列表都能有不同的类型,您可以用代数类型(有区别的联合)包装所有必需的类型:
data MyKey = MyCharKey Char | MyStringKey String | MyIntKey Int
type ListTup = [(MyKey, String)]
你不能拥有"无论什么",因为类型需要在编译时可判定。