Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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 (Windows)从库插入代码时,PutStrLn停止工作_Haskell_Ghc_Z3_Ffi - Fatal编程技术网

Haskell (Windows)从库插入代码时,PutStrLn停止工作

Haskell (Windows)从库插入代码时,PutStrLn停止工作,haskell,ghc,z3,ffi,Haskell,Ghc,Z3,Ffi,我注意到一些非常奇怪的行为: 我正在试着让电脑在windows上工作。但是如果我将库中的代码插入Main模块putStrLn将停止工作。这怎么可能 设置 我使用了用于windows的z3解算器()的预编译x64二进制文件(并将其放入C:\mylibs\z3-4.8.4_x64) 然后我创建了一个堆栈项目haskellZ3Test package.yaml中的相关部分: dependencies: - base >= 4.7 && < 5 - z3 <= 408.

我注意到一些非常奇怪的行为:

我正在试着让电脑在windows上工作。但是如果我将库中的代码插入
Main
模块
putStrLn
将停止工作。这怎么可能

设置
  • 我使用了用于windows的z3解算器()的预编译x64二进制文件(并将其放入
    C:\mylibs\z3-4.8.4_x64

  • 然后我创建了一个堆栈项目
    haskellZ3Test

  • package.yaml
    中的相关部分:

    dependencies:
    - base >= 4.7 && < 5
    - z3 <= 408.0
    
    resolver: lts-13.28
    
    packages:
    - . 
    - location:
        git: https://github.com/IagoAbal/haskell-z3.git
        commit: b10e09b8a809fb5bbbb1ef86aeb62109ece99cae
      extra-dep: true
    
    extra-include-dirs:
    - "C:\\mylibs\\z3-4.8.4_x64\\include"
    extra-lib-dirs:
    - "C:\\mylibs\\z3-4.8.4_x64\\bin"
    
    问题 以下是
    Main
    version 1:

    module Main where
    
    import Z3.Monad
    
    main :: IO ()
    main = putStrLn "hello world"
    
    如果我
    stack build
    然后
    stack exec haskellZ3Test exe
    我会按预期在命令行上获得
    hello world

    但是-这里是
    Main
    version 2:

    module Main where
    
    import Z3.Monad
    
    ast :: Z3 AST
    ast = do
      a <- mkFreshBoolVar "A"
      b <- mkFreshBoolVar "B"
      mkImplies a b
    
    main :: IO ()
    main = putStrLn "hello world"
    
    modulemain其中
    导入Z3.Monad
    ast::Z3 ast
    ast=do
    
    a这看起来像是那个库中的一个bug。也许打开一个问题会有所帮助。你什么也得不到:因为它只是挂起,或者不打印任何内容就退出?如果它终止退出代码是什么?我怀疑这是动态加载或其他方面的问题,甚至在进入
    \u start
    例程之前。如果用调试器加载它,事情可能会变得更清楚。也许z3库已损坏。@它只是退出而不打印任何内容