简短版本:我想为一种类型的函数起别名,type myType = [Int] -> (Tree Int,[Int])
但要多态(这意味着我可以放入任何东西而不仅仅是Int
s)。我怎么能这样做?
长版:我目前有:
data Colour = R | B deriving (Show, Read, Eq)
data Tree elt = E | T Colour (Tree elt) elt (Tree elt) deriving (Show, Read, Eq)
type Set a = Tree a
我想要:
type Funcs = [elt] -> (Tree elt, [elt])
然后编写一些具有类型的函数Funcs
treeify_zero :: Treeify_t
treeify_zero lst = (E,lst)
treeify_one :: Treeify_t
treeify_one (h:t) = ((T R E h E), t)
像这样。目前,我无法type Funcs = forall elt. [elt] -> (Tree elt, [elt])
在 GHCi 中正常运行。如果我使用type Funcs elt = [elt] -> (Tree elt, [elt])
GHCi 抱怨我的定义treeify_zero/one
“应该有 1 个参数,但在 `to': to :: Treeify_t 的类型签名中没有给出”