早上好的程序员!
我正在使用haskell进行项目,我想知道如何运行haskell函数而不必在ghci上键入两行,例如
ghci filename.hs function
这只能做:
ghci filename.hs
function
???? 我正在寻找像C中的main(),它在编译程序时自动运行 有类似的东西吗? 我一直在检查ghci上的-e选项,但我似乎无法让它工作!
非常感谢!
干杯!
答案 0 :(得分:8)
您可能正在寻找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
另请注意,您也可以在ghci中使用:reload
命令。在ghci中加载文件,编辑,键入:reload
并再次测试。此外,如果这看起来太单调乏味,您还可以定义一个ghci宏,它允许您同时重新加载和测试您的函数:
> :def test \x -> return (":reload\n" ++ x)
> :test foo 1 2 3
=> Ok, modules loaded: Foo.
7
如果您希望构建真正的程序而不是快速测试
你的功能,那么你最好在阅读时阅读其他答案
main
函数。
答案 1 :(得分:6)
我认为function
的类型为IO ()
。然后你可以让main = function
,并从命令行使用例如runhaskell modulename
。与在C中一样,main
是一个特殊功能。
为了澄清一点,以防万一:如果你的function
是一个纯粹的,即一个类型不会IO
的那个,你就不能真正“运行它”。我想说这是一种简化,但GHCi的作用基本上就是调用print function
。如果您想模仿此项,可以使用main = print function
之类的内容并使用runhaskell
。这假定function
的类型是Show
的实例。