Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 为什么我不能打电话问莫纳_Haskell_Monad Transformers - Fatal编程技术网

Haskell 为什么我不能打电话问莫纳

Haskell 为什么我不能打电话问莫纳,haskell,monad-transformers,Haskell,Monad Transformers,我试图调用带有monawarder约束的do符号块中的ask,但在刚性类型方面遇到了一个错误。据我所知,ask是为所有恐惧者定义的 这将返回 似乎您已经从Control.Monad.Trans.Reader导入了ask,但从Control.Monad.Reader导入了monader。Control.Monad.Trans.Reader中的ask函数是单态函数,它只适用于ReaderT。只需单独导入Control.Monad.Reader即可重新导出ReaderT,但它提供了ask、local和

我试图调用带有monawarder约束的do符号块中的ask,但在刚性类型方面遇到了一个错误。据我所知,ask是为所有恐惧者定义的

这将返回

似乎您已经从Control.Monad.Trans.Reader导入了ask,但从Control.Monad.Reader导入了monader。Control.Monad.Trans.Reader中的ask函数是单态函数,它只适用于ReaderT。只需单独导入Control.Monad.Reader即可重新导出ReaderT,但它提供了ask、local和Reader的通用版本。

您似乎从Control.Monad.Trans.Reader导入了ask,但从Control.Monad.Reader导入了Monader。Control.Monad.Trans.Reader中的ask函数是单态函数,它只适用于ReaderT。只需单独导入Control.Monad.Reader即可重新导出ReaderT,但它提供了ask、local和Reader的通用版本。

一个警告:C.M.T.R中的local允许更改环境类型,而C.M.R中的local不允许更改。一个警告:C.M.T.R中的local允许更改环境类型,而C.M.R中的local不允许更改。
bar :: MonadReader r m => m r
bar = do
  i <- ask
  return i
• Couldn't match type ‘m’ with ‘ReaderT r m0’
  ‘m’ is a rigid type variable bound by
    the type signature for:
      bar :: forall r (m :: * -> *). MonadReader r m => m r
    at mem.hs:50:8
  Expected type: m r
    Actual type: ReaderT r m0 r
• In a stmt of a 'do' block: i <- ask
  In the expression:
    do { i <- ask;
         return i }
  In an equation for ‘bar’:
      bar
        = do { i <- ask;
               return i }