我刚刚从这里安装了完整的 Haskell 平台和安装程序https://www.haskell.org/platform/mac.html
现在,作为菜鸟,我创建了一个非常简单的程序,只是为了看看它是否有效:
f :: Int -> Int
f x = x + 2
但是当我执行时
runhaskell test.hs
它返回
测试.hs:0:53:错误:
• 变量不在范围内:main :: IO a0
• 也许您的意思是“min”(从 Prelude 导入)
if i run
ghc test.hs
它返回
IO 操作“main”未在模块“Main”中定义
仅指示第一行“f”的第一个字符
通过你的程序你没有指示 Haskell 程序应该做什么。你只有定义了一个函数。这并不意味着 Haskell 会自动调用该函数。
您需要定义一个具有特殊名称的函数main
(ghc
有一个选项可以指定另一个名称,但现在让我们忽略它)。main
是类型的函数IO a
。它是一个描述动作的函数(IO
)在执行程序时被调用。
由于您只定义了一个函数f
,你可能想测试f
.
所以我们可以写一个main
:
main :: IO ()
main = print (f 2)
现在如果将其添加到程序中。编译器将生成一个可执行文件,该可执行文件将执行main
. Here main
非常简单:我们指示它print
的结果f 2
。所以它会打印4
。我们称之为main
the 入口点的程序。
您还可以决定运行交互的会话代替。在这种情况下,您不需要入口点,因为您可以在交互式会话中决定要调用哪些函数。
例如,您可以使用ghci file.hs
启动交互式会话,然后运行:
$ ghci testprogram.hs
GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling Main ( testprogram.hs, interpreted )
Ok, modules loaded: Main.
*Main> f 2
4
所以现在我们已经调用了f 2
,交互会话自动打印结果4
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)