Haskell 如何仅使用stack.yaml将ghci与反射项目一起使用?

Haskell 如何仅使用stack.yaml将ghci与反射项目一起使用?,haskell,ghcjs,reflex,Haskell,Ghcjs,Reflex,我已经从Reflection项目中删除了nix,并将其替换为stack。一切都很好,除了能够使用repl。我试图创建一个最小反射项目来演示我所尝试的,以及我尝试产生的错误 stack repl——stack yaml=stack-ghc.yaml 截断错误日志 Error: -- While building custom Setup.hs for package jsaddle-dom -0.9.2.0 using: /home/mlitchard/.stack/setup-exe-cac

我已经从Reflection项目中删除了nix,并将其替换为stack。一切都很好,除了能够使用repl。我试图创建一个最小反射项目来演示我所尝试的,以及我尝试产生的错误

stack repl——stack yaml=stack-ghc.yaml

截断错误日志

Error: -- While building custom Setup.hs for package jsaddle-dom 
-0.9.2.0 using: /home/mlitchard/.stack/setup-exe-cache/x86_64- 
linux/Cabal-simple_mPHDZzAJ_1.24.2.0_ghc-8.0.2 --builddir=.stack- 
work/dist/x86_64-linux/Cabal-1.24.2.0 build lib:jsaddle-dom --ghc- 
options " -ddump-hi -ddump-to-file" Process exited with code: 
ExitFailure 1 Logs have been written to:

/home/mlitchard/projects/git/reflex-todo/.stack-work/logs/jsaddle-dom-0.9.2.0.log

Preprocessing library jsaddle-dom-0.9.2.0...
[587 of 599] Compiling JSDOM.Custom.XMLHttpRequest ( 
src/JSDOM/Custom/XMLHttpRequest.hs, .stack-work/dist/x86_64- 
linux/Cabal-1.24.2.0/build/JSDOM/Custom/XMLHttpRequest.o )

/home/mlitchard/projects/git/reflex-todo/.stack- 
work/downloaded/Vheiln5kqwE0/src/JSDOM/Custom/XMLHttpRequest.hs:39:46: 
error:
    • Could not deduce (Control.Monad.Catch.MonadThrow
                      Language.Javascript.JSaddle.Types.JSM)
    arising from a use of ‘throwM’
  from the context: MonadDOM m
    bound by the type signature for:
               throwXHRError :: MonadDOM m => Maybe XHRError -> m ()
    at src/JSDOM/Custom/XMLHttpRequest.hs:38:1-53
• In the second argument of ‘(.)’, namely ‘throwM’
  In the second argument of ‘maybe’, namely ‘(liftDOM . throwM)’
  In the expression: maybe (return ()) (liftDOM . throwM)

/home/mlitchard/projects/git/reflex-todo/.stack- 
work/downloaded/Vheiln5kqwE0/src/JSDOM/Custom/XMLHttpRequest.hs:42:20: 
error:
• No instance for (Control.Monad.Catch.MonadMask
                     Language.Javascript.JSaddle.Types.JSM)
    arising from a use of ‘bracket’
• In the first argument of ‘(.)’, namely ‘bracket aquire id’
  In the expression: bracket aquire id . const
  In an equation for ‘withEvent’:
      withEvent aquire = bracket aquire id . const

/home/mlitchard/projects/git/reflex-todo/.stack- 
work/downloaded/Vheiln5kqwE0/src/JSDOM/Custom/XMLHttpRequest.hs:45:31: 
error:
• Could not deduce (Control.Monad.Catch.MonadCatch
                      Language.Javascript.JSaddle.Types.JSM)
    arising from an operator section
  from the context: MonadDOM m
    bound by the type signature for:
               send' :: MonadDOM m => XMLHttpRequest -> Maybe JSVal -> m ()
    at src/JSDOM/Custom/XMLHttpRequest.hs:44:1-62
• In the expression: (`onException` abort self)
  In the second argument of ‘($)’, namely
    ‘(`onException` abort self)
     $ do { result <- liftIO newEmptyMVar;
            r <- withEvent
                   (onAsync self Generated.error . liftIO
                    $ putMVar result (Just XHRError))
                 $ withEvent
                     (onAsync self abortEvent . liftIO
                      $ putMVar result (Just XHRAborted))
                   $ withEvent (onAsync self load . liftIO $ putMVar result Nothing)
                     $ do { void
                            $ case mbVal of {
                                Nothing -> ...
                                Just val -> ... };
                            liftIO $ takeMVar result };
            throwXHRError r }’
  In the expression:
    liftDOM
    $ (`onException` abort self)
      $ do { result <- liftIO newEmptyMVar;
             r <- withEvent
                    (onAsync self Generated.error . liftIO
                     $ putMVar result (Just XHRError))
                  $ withEvent
                      (onAsync self abortEvent . liftIO
                       $ putMVar result (Just XHRAborted))
                    $ withEvent (onAsync self load . liftIO $ putMVar result Nothing)
                      $ do { void
                             $ case mbVal of {
                                 Nothing -> ...
                                 Just val -> ... };
                             liftIO $ takeMVar result };
             throwXHRError r }
错误:--为包jsaddle dom构建custom Setup.hs时
-0.9.2.0使用:/home/mlitchard/.stack/setup exe cache/x86_64-
linux/Cabal-simple\u mPHDZzAJ\u 1.24.2.0\u ghc-8.0.2--builddir=.stack-
work/dist/x86_64-linux/Cabal-1.24.2.0构建库:jsaddle-dom--ghc-
选项“-ddump hi-ddump to file”进程已退出,代码为:
ExitFailure 1日志已写入:
/home/mlitchard/projects/git/reflection todo/.stack work/logs/jsaddle-dom-0.9.2.0.log
预处理库jsaddle-dom-0.9.2.0。。。
[587/599]编译JSDOM.Custom.XMLHttpRequest(
src/JSDOM/Custom/XMLHttpRequest.hs、.stack-work/dist/x86_64-
linux/Cabal-1.24.2.0/build/JSDOM/Custom/XMLHttpRequest.o)
/home/mlitchard/projects/git/reflection todo/.stack-
工作/下载/Vheiln5kqwE0/src/JSDOM/Custom/XMLHttpRequest.hs:39:46:
错误:
•无法推断(Control.Monad.Catch.MonadThrow
Language.Javascript.JSaddle.Types.JSM)
因使用“throwM”而产生
从上下文看:蒙纳多姆
受以下类型签名的约束:
throwxhroror::MonadDOM m=>可能是xhroror->m()
在src/JSDOM/Custom/XMLHttpRequest.hs:38:1-53
•在“(.”的第二个参数中,即“throwM”
在“maybe”的第二个参数中,即“liftDOM.throwM”
在表达式中:maybe(return())(liftDOM.throwM)
/home/mlitchard/projects/git/reflection todo/.stack-
工作/下载/Vheiln5kqwE0/src/JSDOM/Custom/XMLHttpRequest.hs:42:20:
错误:
•没有(Control.Monad.Catch.MonadMask)的实例
Language.Javascript.JSaddle.Types.JSM)
因使用“括号”而产生
•在“(.”的第一个参数中,即“括号中的获取id”
在表达式中:括号中为aquire id。常数
在“withEvent”的方程式中:
withEvent aquire=括号中的aquire id。常数
/home/mlitchard/projects/git/reflection todo/.stack-
工作/下载/Vheiln5kqwE0/src/JSDOM/Custom/XMLHttpRequest.hs:45:31:
错误:
•无法推断(Control.Monad.Catch.MonadCatch)
Language.Javascript.JSaddle.Types.JSM)
由操作员部分产生
从上下文看:蒙纳多姆
受以下类型签名的约束:
send'::MonadDOM=>XMLHttpRequest->Maybe JSVal->m()
在src/JSDOM/Custom/XMLHttpRequest.hs:44:1-62
•在表达式中:(`onException`abort self)
在“($)”的第二个参数中,即
“(`onException`abort self)
$do{result…};
liftIO$takeMVar result};
Throwxhrorr}'
在表达式中:
升空
$(`onException`abort self)
$do{result…};
liftIO$takeMVar result};
throwxhrorr}

答案的线索来自这个项目

具体来说,这个标志:
package-reflection-dom
标志:+使用warp-webkit2gtk

我已经更新了上面的git项目,以反映正在工作的stack.yaml文件