是否可以为除最后一个类型参数以外的类型参数创建Functor实例?

时间:2019-03-26 23:34:37

标签: haskell typeclass

有时某些数据类型包含多个类型参数(例如Either a b(a,b))。我们可以为b参数创建一个Functor实例,事实证明这很简单。但是a参数呢?我知道可以用相反的顺序将所有参数包装在newtype中,但是有一种方法可以创建第二阶类型类的实例(这是描述Functor /的正确方法Applicative / Monad?)直接在最后一个参数以外的参数上?我不这么认为,但实际上找不到在任何地方写下来的内容。

上下文:

Another question on Stack Overflow来自研究Haskell的一名学生,该学生试图为自己的类Either类型创建Functor实例,大概是作为一个类分配。不幸的是,他们将数据类型定义为data Alt a b = Success a | Failure b,并且由于希望对a参数进行fmap操作而无法使函子实例正常工作。当我意识到我实际上并不确定这一点时,我将要写Functor实例仅适用于最后一个参数。这就是我的问题。

0 个答案:

没有答案