2017-05-09 89 views
4

有没有一种方法可以使用Data.Map,使得值的类型取决于键的类型?我需要确保我从不在地图中输入错误的类型值。Haskell映射键的类型决定值的类型的地图

例如: 比方说,我有类型KeyType aValType a 那么地图应该有类似的类型

Map (KeyType a) (ValType a)

但是,这显然是行不通的,因为a未绑定。

+0

听起来像保险库https://www.stackage.org/package/vault –

+7

也考虑一个['dependent-map'](https://hackage.haskell.org/package/dependent-map) –

回答

0

可以使用一种类型的代名词绑定a,以便它必须是相同的您KeyTypeValType

type MapFor a = Map (KeyType a) (ValType a) 

现在你可以使用MapFor a(对于某些特定a)任何地方,你会一直使用Map (KeyType a) (ValType a)

+2

这将会不适合我,因为对于一张地图,“a”是固定的。我希望'a'对于不同的键有所不同。我认为“从属地图”对我很有用。 –