Haskell Map键的类型确定值的类型

Gan*_*kar 5 haskell

有没有办法以这样的方式使用Data.Map,值的类型取决于键的类型?我需要确保我永远不会在地图中插入错误的类型值.

例如:假设我有类型KeyType a,ValType a 然后Map应该有类似的类型

Map (KeyType a) (ValType a)

但这显然不起作用,因为a没有约束.

小智 0

您可以使用类型同义词进行绑定,以便它对于您的anda必须相同:KeyTypeValType

type MapFor a = Map (KeyType a) (ValType a)
Run Code Online (Sandbox Code Playgroud)

现在您可以在您曾经使用过的任何地方使用MapFor a(对于某些特定的) 。aMap (KeyType a) (ValType a)

  • 这对我不起作用,因为对于一张地图,“a”是固定的。我希望“a”对于不同的键来说是不同的。我认为“dependent-map”对我有用。 (3认同)