次の型とクラスの定義を使用すると、以下を作成するときになぜエラーが発生するのかわかりません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