我听说你可以解释Haskell文件(我认为这意味着它们会像Ruby/Python/Perl一样工作)。然而,我找不到GHC的命令行选项来执行此操作。无论如何,它总是要编译我的文件。我也看了一下GHCi,但它总是将我导入到repl。
基本上,我想只需要做ghc -i MyFile.hs
(其中-i是我虚构的标志,我假装它与解释模式相关),并执行以便我可以在尝试想法和学习时获得快速反馈。
我听说你可以解释Haskell文件(我认为这意味着它们会像Ruby/Python/Perl一样工作)。然而,我找不到GHC的命令行选项来执行此操作。无论如何,它总是要编译我的文件。我也看了一下GHCi,但它总是将我导入到repl。
基本上,我想只需要做ghc -i MyFile.hs
(其中-i是我虚构的标志,我假装它与解释模式相关),并执行以便我可以在尝试想法和学习时获得快速反馈。
$ runhaskell MyFile.hs
或者,你可以使用runghc
命令(它们是同一个东西)。ghci MyFile.hs
也会启动一个交互式REPL会话,并加载MyFile.hs
文件,但如果您想运行一个主程序,则应该使用runhaskell
命令。
最好习惯性地在GHCi中将程序的各个部分作为独立单元进行测试,而不是每次都运行整个程序。当然,对于较短的脚本,直接运行整个程序是最简单和最容易的方法。
runhaskell
不在我的路径上,但 runghc
是存在的。(所以提到 runghc
算是加分项) - derekv你可以使用以下脚本:
#!/usr/bin/env runhaskell
main = putStrLn "hello world"
将文件设为可执行(即 chmod +x haskell_script
),就可以像运行其他shell脚本一样运行它。
()
, runhaskell
会自动输出该值,就像GHCi一样。这种情况在使用ghc
正常编译后生成的可执行文件中不会发生。 - Mark Reedmyfile.txt
,其中包含在GHC解释器中可用的简单代码行,如下所示:let a = 0 in a:[1,2]
let x = [1,2] in x ++ [3,4]
您可以做以下事情:
ghc -e ':script myfile.txt'
在Windows系统中,必须使用双引号:
ghc -e ":script myfile.txt"
相反,您也可以打开 GHCi
并执行 :script myfile.txt
。