我想做这样的事情
$ stack eval 'functionDefinedInMain $ 1 + 1' > test1.txt
但是,当我执行时,stderr
告诉我
<interactive>:1:1: Not in scope: ‘functionDefinedInMain’
我还尝试将代码导入stack ghci
,这让我更接近:
$ echo 'functionDefinedInMain $ 1+1' | stack ghci > test2.txt
Using main module: 1. Package `exp-proj' component exe:exp-proj with main-is file: /home/wizek/sandbox/exp-proj/exp-proj/src/Main.hs
Configuring GHCi with the following packages: exp-proj
$ cat test2.txt
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
[1 of 5] Compiling Utils ( /home/wizek/sandbox/exp-proj/exp-proj/src/Utils.hs, interpreted )
[2 of 5] Compiling Vertex ( /home/wizek/sandbox/exp-proj/exp-proj/src/Vertex.hs, interpreted )
[3 of 5] Compiling Edge ( /home/wizek/sandbox/exp-proj/exp-proj/src/Edge.hs, interpreted )
[4 of 5] Compiling Lib ( /home/wizek/sandbox/exp-proj/exp-proj/src/Lib.hs, interpreted )
[5 of 5] Compiling Main ( /home/wizek/sandbox/exp-proj/exp-proj/src/Main.hs, interpreted )
Ok, modules loaded: Utils, Vertex, Edge, Lib, Main.
*Main Edge Lib Utils Vertex> 3
*Main Edge Lib Utils Vertex> Leaving GHCi.
如您所见,输出(只是3
本示例中的数字)文件被GHCi
.
我希望文件的内容改为:
$ cat test2.txt
3
我怎么能
- 加载
stack eval
我文件中指定的所有项目模块以.cabal
在上下文中执行代码,或者 - 将 GHCi 输出抑制到
stdout
? (我不介意 GHCi 是否会发送消息stderr
)
$ stack --version
Version 1.0.2, Git revision fa09a980d8bb3df88b2a9193cd9bf84cc6c419b3 (3084 commits) x86_64
编辑:添加了 unix 和 bash 标记,因为stack
即使GHCi
没有来自stack
.