gpt4 book ai didi

macos - Haskell 第一步编译错误

转载 作者:行者123 更新时间:2023-12-04 17:43:37 25 4
gpt4 key购买 nike

我刚刚从这里安装了完整的 Haskell 平台 https://www.haskell.org/platform/mac.html
现在,作为我的菜鸟,我创建了一个非常简单的程序,只是为了看看它是否有效:

f :: Int -> Int
f x = x + 2
但是当我执行
runhaskell test.hs
它返回

test.hs:0:53: error:

• Variable not in scope: main :: IO a0

• Perhaps you meant ‘min’ (imported from Prelude)


如果我跑
ghc test.hs
它返回

The IO action ‘main’ is not defined in module ‘Main’


仅指示第一行“f”的第一个字符

最佳答案

通过您的程序,您 没有指示 Haskell 程序应该做什么 .你只有定义了一个函数 .这并不意味着 Haskell 会自动调用该函数。

您需要定义一个具有特殊名称的函数 main ( ghc 有一个选项可以指定另一个名称,但我们现在先忽略它)。 mainIO a 类型的函数.它是一个描述执行程序时调用的操作 ( IO ) 的函数。

由于您只定义了一个函数 f ,您可能想测试 f .

所以我们可以写一个 main :

main :: IO ()
main = print (f 2)

现在,如果将此添加到程序中。编译器将生成一个可执行文件,该可执行文件将执行 main .这里 main很简单:我们指示它 print f 2 的结果.所以它会打印 4 .我们调用 main程序的入口点。

您也可以决定改为运行交互式 session 。在这种情况下,您不需要入口点,因为您可以在交互式 session 中决定将调用哪些函数。

例如,您可以使用 ghci file.hs开始一个交互式 session ,然后运行:
$ 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 ,交互 session 自动打印结果 4 .

关于macos - Haskell 第一步编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46796205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com