我对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
不是一个有效的表达式