无法在 Haskell 中编译主要函数

Cannot get main function to compile in Haskell

我对 Haskell 比较陌生,我所做的一切都是通过 GHCi 完成的,但是,现在我正在尝试使用 GHC 进行编译,但是,我不断收到错误消息 The IO action ‘main’ is not defined in module ‘Main’ ,我曾尝试声明 main = do,但是,我收到了更多错误,即 fib 0 = 1.

行中的 parse error on input ‘=’

这是我正在使用的代码:

module Main where
    fib :: Integer -> Integer
    fib 0 = 1
    fib 1 = 1
    fib x = fib (x - 1) + fib (x - 2)

提前感谢您的帮助!

因为main应该是IO ()类型。这样的事情应该有效:

main = print $ fib 3

您的整个程序应如下所示:

module Main where

fib :: Integer -> Integer
fib 0 = 1
fib 1 = 1
fib x = fib (x - 1) + fib (x - 2)

main = print $ fib 3

请注意 space 您的代码与上述代码在 fib 函数中的区别。

I have tried declaring main = do

main = do 对编译器没有任何意义。请记住 do 是 monad 的语法糖。 do 不是有效的表达式。

你应该这样写:

module Main where

fib :: Integer -> Integer
fib 0 = 1
fib 1 = 1
fib x = fib (x - 1) + fib (x - 2)

main :: IO ()
main = do
    print $ fib 10

注意:您的 fib 函数不应缩进,应左对齐。