无法在Haskell中编译main函数



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

下面是我正在使用的代码:

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

提前感谢您的帮助!

你应该这样写:

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函数不应该缩进,它应该左对齐。

因为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

请注意您的代码与上述fib函数中的代码之间的空格差异。

我已经尝试声明main = do

main = do对编译器来说没有任何意义。请记住,do是单子的语法糖。do不是一个有效的表达式

相关内容

  • 没有找到相关文章

最新更新