【发布时间】:2012-01-11 22:54:42
【问题描述】:
在这段代码中,我试图让工作函数go 中的第一个参数成为“类型族”类型。我看到在type families documentation 类型中,类似的insert 函数属于类型类,而在下面的示例中它不属于。
我是类型族的新手,所以也许我用错了,但是这个错误是什么意思?
{-# LANGUAGE TypeFamilies #-}
-- | key
class K a where
-- | iterator for key
type I a :: *
mkI :: a -> I a
--| A map
data (K a) => M a b = M a b
insert :: (K a) => a -> b -> M a b -> M a b
insert = go mkI -- <<< PROBLEM
where
go o a b m = m
约束中的模糊类型变量“a”:
`K a' arising from an expression type signature at Data/Map2.hs:167:10-33可能的修复:添加修复的类型签名 这些类型变量
【问题讨论】:
-
首先,请注意数据类型上下文 (
data (K a) => M a b = M a b) 已从语言中删除,并且从未有用过。现在看看其他的东西。
标签: haskell type-families