Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/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 安装scion浏览器时出错_Haskell_Cabal - Fatal编程技术网

Haskell 安装scion浏览器时出错

Haskell 安装scion浏览器时出错,haskell,cabal,Haskell,Cabal,尝试安装scion browser软件包时出现以下错误,如下所示: % cabal install scion-browser-0.2.9 <snipped> [23 of 23] Compiling Main ( src/Main.hs, dist/build/scion-browser/scion-browser-tmp/Main.o ) src/Main.hs:31:24: No instance for (MonadException Bro

尝试安装scion browser软件包时出现以下错误,如下所示:

% cabal install scion-browser-0.2.9
<snipped>
[23 of 23] Compiling Main             ( src/Main.hs, dist/build/scion-browser/scion-browser-tmp/Main.o )

src/Main.hs:31:24:
    No instance for (MonadException BrowserM)
      arising from a use of `getInputLine'
    Possible fix:
      add an instance declaration for (MonadException BrowserM)
    In a stmt of a 'do' block: maybeLine <- getInputLine ""
    In the expression:
      do { maybeLine <- getInputLine "";
           case maybeLine of {
             Nothing -> return ()
             Just line -> do { ... } } }
    In an equation for `loop':
        loop
          = do { maybeLine <- getInputLine "";
                 case maybeLine of {
                   Nothing -> return ()
                   Just line -> ... } }
cabal: Error: some packages failed to install:
scion-browser-0.2.9 failed during the building phase. The exception was:
ExitFailure 1
%cabal安装scion-browser-0.2.9
[23/23]编译Main(src/Main.hs,dist/build/scion-browser/scion-browser-tmp/Main.o)
src/Main.hs:31:24:
没有(MonadException BrowserM)的实例
由于使用“getInputLine”而产生
可能的解决方案:
为(MonadException BrowserM)添加实例声明
在'do'块的stmt中:maybeLine do{…}
在“循环”的方程式中:
环
=do{maybeLine返回()
只需行->…}
阴谋集团:错误:某些软件包未能安装:
scion-browser-0.2.9在构建阶段失败。例外情况是:
退出失败1
你知道怎么解决这个问题吗

谢谢。

问题是更改了使用的
StateT
类型。在
haskeline<0.7
中,它使用了来自的
Control.Monad.State
模块,在0.7.0.0版本中,
haskeline
放弃了对
mtl
的依赖,直接使用包的
StateT
Monad转换器。这本身并不是问题,因为mtl现在只是
变形金刚
的包装器。但是,
haskeline
使用的模块是
Control.Monad.Trans.State.Strict
,而
Control.Monad.State
来自
mtl
包装
Control.Monad.Trans.State.Lazy
。因此

instance MonadException m => MonadException (StateT s m) where
    controlIO f = StateT $ \s -> controlIO $ \(RunIO run) -> let
                    run' = RunIO (fmap (StateT . const) . run . flip runStateT s)
                    in fmap (flip runStateT s) $ f run'
System.Console.Haskeline.MonadException
不再用于所使用的
StateT

简单的解决方法是将haskeline约束到早期版本

cabal install --constraint="haskeline < 0.7" scion-browser
cabal安装--constraint=“haskeline<0.7”scion浏览器
另一个解决方案是将
scion浏览器
source中的导入更改为
Control.Monad.State.Strict
,使其使用
haskeline-0.7.0.0
构建。问题是更改了使用的
StateT
类型。在
haskeline<0.7
中,它使用了来自的
Control.Monad.State
模块,在0.7.0.0版本中,
haskeline
放弃了对
mtl
的依赖,直接使用包的
StateT
Monad转换器。这本身并不是问题,因为mtl现在只是
变形金刚
的包装器。但是,
haskeline
使用的模块是
Control.Monad.Trans.State.Strict
,而
Control.Monad.State
来自
mtl
包装
Control.Monad.Trans.State.Lazy
。因此

instance MonadException m => MonadException (StateT s m) where
    controlIO f = StateT $ \s -> controlIO $ \(RunIO run) -> let
                    run' = RunIO (fmap (StateT . const) . run . flip runStateT s)
                    in fmap (flip runStateT s) $ f run'
System.Console.Haskeline.MonadException
不再用于所使用的
StateT

简单的解决方法是将haskeline约束到早期版本

cabal install --constraint="haskeline < 0.7" scion-browser
cabal安装--constraint=“haskeline<0.7”scion浏览器

另一个解决方案是将
scion浏览器
source中的导入更改为
Control.Monad.State.Strict
,使其使用
haskeline-0.7.0.0

生成
ghc-pkg-list-mtl
ghc-pkg-list-transformers
显示什么?您是否安装了较旧的
haskeline
?我想您只是在查找版本号。mtl-2.0.1.0和变形金刚-0.2.2.0和haskeline-0.7.0.0。不,我怀疑是其他原因,但我同时找到了原因。ghc pkg列出mtl和ghc pkg列出变形金刚的清单显示了什么?您是否安装了较旧的
haskeline
?我想您只是在查找版本号。mtl-2.0.1.0和transformers-0.2.2.0和haskeline-0.7.0.0.0不,我怀疑还有其他原因,但我同时找到了原因。上限@JPMoresmau很好。从长远来看,切换到
Control.Monad.Strict
以跟上更新的haskeline版本会更好吗?@Daniel Fischer,是的,我们最终会转移到新版本,但让我们等待尘埃落定,确保haskeline版本没有问题。@JPMoresmau当然。我最感兴趣的是scion browser是否做了一些打结或其他需要懒散的
StateT
的把戏,或者是否只是更改导入的问题。上限@JPMoresmau Good。从长远来看,切换到
Control.Monad.Strict
以跟上更新的haskeline版本会更好吗?@Daniel Fischer,是的,我们最终会转移到新版本,但让我们等待尘埃落定,确保haskeline版本没有问题。@JPMoresmau当然。我最感兴趣的是scion browser是否做了一些打结或其他需要惰性状态的技巧,或者是否只是更改导入的问题。