是否可以直接从Bash调用Haskell代码并输出到stdout?

Joe*_*rdy 25 bash command-line haskell

有可能输出到stdout一个简单的Haskell单线程

main = print "Hello World"

直接来自Bash?东西php -r 'echo "Hello World\n";'

我在ghc选项中四处寻找,但我没有看到任何可以帮助我的东西.

Joe*_*rdy 24

我想我从这里想出来

$ ghc -e "interact (unlines.map reverse.lines)"
hello
olleh
Run Code Online (Sandbox Code Playgroud)

更新:

刚做了一些测试,这也有效:

echo "hi" | ghc -e "interact (unlines.map reverse.lines)"
// prints "ih"
Run Code Online (Sandbox Code Playgroud)


elm*_*elm 11

考虑runhaskell可以采用管道stdin的命令,例如像这样,

echo 'main = print "Hello World"' | runhaskell
Run Code Online (Sandbox Code Playgroud)

更新

通常,您可以按如下方式编写Haskell源代码,

#!/usr/bin/env runhaskell

main = putStrLn "Hello World"
Run Code Online (Sandbox Code Playgroud)

这实际上编译并执行程序,而ghc -e将评估表达式.


Joa*_*ner 9

你找到了ghc -e自己.以下是一些与之相关的有用别名:

function hmap { ghc -e "interact ($*)";  }
function hmapl { hmap  "unlines.($*).lines" ; }
function hmapw { hmapl "map (unwords.($*).words)" ; }
Run Code Online (Sandbox Code Playgroud)

(在我的这篇老博文中讨论过.)