Haskell调用函数onload

时间:2011-12-28 13:20:53

标签: function haskell call onload

早上好的程序员!

我正在使用haskell进行项目,我想知道如何运行haskell函数而不必在ghci上键入两行,例如

ghci filename.hs function

这只能做:

 ghci filename.hs
function

???? 我正在寻找像C中的main(),它在编译程序时自动运行 有类似的东西吗? 我一直在检查ghci上的-e选项,但我似乎无法让它工作!

非常感谢!

干杯!

2 个答案:

答案 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的实例。