Haskell可以用来编写shell脚本吗?

iha*_*ter 24 unix linux shell haskell

是否有可能在Haskell中编写shell脚本,如果是这样,你是如何做到的?只是改变翻译就好吗?

#!/bin/ghci
Run Code Online (Sandbox Code Playgroud)

ham*_*mar 43

使用ghci将只在GHCi中加载模块.要将其作为脚本运行,请使用runhaskellrunghc:

#!/usr/bin/env runhaskell
main = putStrLn "Hello World!"
Run Code Online (Sandbox Code Playgroud)


amr*_*sal 13

请仔细检查此演示文稿:实用的Haskell:使用类型编写脚本


sth*_*sth 11

如果您将解释器更改为此应该可以工作:

#!/usr/bin/runhaskell
Run Code Online (Sandbox Code Playgroud)

  • 而不是硬编码路径,一般来说最好用@Hammar建议的方式使用`#!/ usr/bin/env runhaskell`,以便在你的路径中的任何地方找到`runhaskell`而不是在`/ usr/bin中`.许多人不在系统级别安装Haskell,因此您不能总是在该位置找到它. (5认同)

Jam*_*ock 5

截至2016年10月,这个问题有了更好的答案:使用Haskell Tool Stack脚本解释器.stack基于Haskell的脚本是可移植的,因为它们下载(并缓存)正确版本ghc及其所有包依赖项.

#!/usr/bin/env stack
-- stack --resolver lts-3.2 --install-ghc runghc
main = putStrLn "Hello World!"
Run Code Online (Sandbox Code Playgroud)

另请参阅教程如何使用堆栈编写脚本.