【发布时间】:2017-01-24 08:50:02
【问题描述】:
我有以下newtype:
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
newtype Wrap m a = Wrap {runWrap :: m a}
deriving (Functor, Applicative, Monad, MonadTrans)
我正在尝试自动派生MonadTrans,但出现以下错误:
• Can't make a derived instance of ‘MonadTrans Wrap’
(even with cunning GeneralizedNewtypeDeriving):
cannot eta-reduce the representation type enough
• In the newtype declaration for ‘Wrap’
但是,为MonadTrans 编写一个简单的实例就可以了:
instance MonadTrans Wrap where
lift = Wrap
出现这种错误信息的原因是什么?
【问题讨论】:
标签: haskell monad-transformers deriving