使用以下类型和类定义,我不明白为什么我会在下面创建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)? –