Nun*_*ira 2 haskell function call onload
各位程序员早上好!
我正在使用haskell进行项目,我想知道如何运行haskell函数而不必在ghci上键入两行,例如
ghci filename.hs function
Run Code Online (Sandbox Code Playgroud)
这只能做:
ghci filename.hs
function
Run Code Online (Sandbox Code Playgroud)
???? 我正在寻找像C中的main(),它在编译程序时自动运行是否有类似的东西?我一直在检查ghci上的-e选项,但我似乎无法让它工作!
非常感谢你!
干杯!
您可能正在寻找ghc -e:
> echo 'foo x y z = x+y*z' > foo.hs % let's make a foo.hs file
> ghc foo.hs -e 'foo 1 2 3' % call the function in foo.hs
=> 7
Run Code Online (Sandbox Code Playgroud)
另请注意,您也可以:reload在ghci中使用该命令.将文件加载到ghci中,:reload再次编辑,键入和测试.此外,如果这看起来太单调乏味,您还可以定义一个ghci宏,它允许您同时重新加载和测试您的函数:
> :def test \x -> return (":reload\n" ++ x)
> :test foo 1 2 3
=> Ok, modules loaded: Foo.
7
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找构建真正的程序而不是快速测试您的函数,那么您最好阅读有关编写main函数的其他答案
.
我假设function有类型IO ().然后你可以让它main = function,例如runhaskell modulename从命令行使用.如在C中,main是一个特殊功能.
为了澄清一点,以防万一:如果你function是一个纯粹的,即一个类型不会进行调用IO,你就不能真正"运行它".我想说这是一个简化,但基本上GHCi所做的就是打电话print function.如果你想模仿这个,你可以使用类似main = print function和使用runhaskell.这假设function的类型是一个实例Show.