使用以下類型和類定義,我不明白爲什麼我會在下面創建instance
時出錯併發生錯誤。存在類型。爲異構映射編寫類的實例
我需要MyMap來保存異構值的映射。
{-# LANGUAGE ExistentialQuantification #-}
module Scratch.SO_ExtistentialTypes where
import Data.Map
type MyMap a = Map String a
class MyClass c where
getMyMap :: forall a. c -> MyMap a
data MyData = forall a. MyData {
myMap :: MyMap a
}
instance MyClass MyData where
getMyMap = myMap -- <= ERROR
你想在這裏完成什麼?因爲我嚴重懷疑這是一個好方法。 –
@ C.A.McCann'type'和'class'是定義'API'的模塊的一部分。 'data'和'type'是(簡化的)暫定實現。 –
@ C.A.McCann另一種說法是:如何創建一個可以作爲MyClass實例的數據類型(MyData)? –