鉴于以下计划:
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE FlexibleInstances #-}
import Control.Monad.Reader
newtype AppM a = AppM (ReaderT Int IO a)
deriving (Functor, Applicative, Monad, MonadReader)
Run Code Online (Sandbox Code Playgroud)
在MonadReader获得申报应MonadReader Int.GHC生成以下错误消息:
Expecting one more argument to ‘MonadReader’
Expected kind ‘* -> ghc-prim-0.4.0.0:GHC.Prim.Constraint’,
but ‘MonadReader’ has kind ‘*
-> (* -> *) -> ghc-prim-0.4.0.0:GHC.Prim.Constraint’
In the newtype declaration for ‘AppM’
Run Code Online (Sandbox Code Playgroud)
此错误消息让我感到困惑.那种MonadReader就是* -> (* -> *) -> GHC.Prim.Constraint,作为错误消息指出,这是有道理的.但是,错误消息表明它希望是实物* -> GHC.Prim.Constraint,尽管事实上它MonadReader Int实际上是善良的(* -> *) -> GHC.Prim.Constraint.
鉴于这种类型*并且* -> *不匹配,此错误消息不仅会误导我,而且实际上是错误的.这是一个错误,还是我忽略了此错误消息中的内容?
| 归档时间: |
|
| 查看次数: |
349 次 |
| 最近记录: |