我注意到一些非常奇怪的行为:
我正在尝试让haskell z3 bindings在Windows上工作。但是,如果我从库中将代码插入到Main
模块中,putStrLn
就会停止工作。怎么可能呢?
我将z3求解器(z3.4.8.4)的预编译x64二进制文件用于Windows(并将其放在C:\mylibs\z3-4.8.4_x64
中)。
然后我创建了一个堆栈项目haskellZ3Test
package.yaml
中的相关部分:
dependencies:
- base >= 4.7 && < 5
- z3 <= 408.0
stack.yaml
中的相关部分:
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
版本1:
module Main where
import Z3.Monad
main :: IO ()
main = putStrLn "hello world"
如果我先stack build
,然后再stack exec haskellZ3Test-exe
,则按预期在命令行上得到hello world
。
但是-这里是Main
版本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"
如果我先stack build
然后再stack exec haskellZ3Test-exe
,我什么也没得到...
老实说,我很困惑-编译和链接似乎正常。 非常感谢您的帮助。预先非常感谢。