Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.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
真实世界中的MonadState实例Haskell不';不编译_Haskell_Monad Transformers - Fatal编程技术网

真实世界中的MonadState实例Haskell不';不编译

真实世界中的MonadState实例Haskell不';不编译,haskell,monad-transformers,Haskell,Monad Transformers,从复制的MonadState实例给了我GHC 7.4.2的一个错误 instance (MonadState s m) => MonadState s (MaybeT m) where get = lift get put k = lift (put k) 给予 如果我添加XFlexibleInstances,我会被告知添加XundecardableInstances——我认为这里不需要这些扩展。如何编译此实例?当您查看时,您会发现它也用于“Official”实现,所以我想它是必

从复制的MonadState实例给了我GHC 7.4.2的一个错误

instance (MonadState s m) => MonadState s (MaybeT m) where
  get = lift get
  put k = lift (put k)
给予

如果我添加XFlexibleInstances,我会被告知添加XundecardableInstances——我认为这里不需要这些扩展。如何编译此实例?

当您查看时,您会发现它也用于“Official”实现,所以我想它是必需的。评论说,这与保险范围条件有关,这在以下问题中进行了解释:

在这种情况下,变量s不在右侧,函数依赖关系从右向左,因此实例无效。(无不可判定的情况)

    Illegal instance declaration for `MonadState s (MaybeT m)'
  (All instance types must be of the form (T a1 ... an)
   where a1 ... an are *distinct type variables*,
   and each type variable appears at most once in the instance head.
   Use -XFlexibleInstances if you want to disable this.)
In the instance declaration for `MonadState s (MaybeT m)'