无法在 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
函数不应缩进,应左对齐。
我对 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
函数不应缩进,应左对齐。