2017-05-09 34 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'對於不同的鍵有所不同。我認爲「從屬地圖」對我很有用。 –