使用类型同义词定义实例

如果这已经被问过/回答过很多次了,我很抱歉——我很难确定问题的实际是什么,因此不知道要搜索什么。


本质上,我定义了一个类:

class (MonadIO m) => Logger m where ...

然后我有一个类型(我想说类型同义词,但我不确定这是否是正确的“术语”):

type ResourceOpT r m a = StateT (ResourceCache r) m a

为什么这个实例是完全有效的:

instance (MonadIO m) => Logger ( StateT s m )

但不是这个(我想第一个更抽象/更可取,但我试图理解为什么):

instance (MonadIO m) => Logger ( ResourceOpT r m )

根据我的定义,两者不应该是等效的ResourceOpT吗?具体来说,我得到的错误是:

  The type synonym 'ResourceOpT' should have 3 arguments, but has been given 2
  In the instance declaration for 'Logger (ResourceOpT r m)'

我有一种感觉,我正在做的事情在概念上“应该”起作用,但要么我的语法错误,要么我遗漏了某些东西(可能是语言扩展),或者应该让它起作用。

无论如何,我很想得到您的意见并了解为什么这是错误的以及为什么我应该/不应该这样做。

提前致谢。

以上是使用类型同义词定义实例的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>