我对Haskell相对较新,我所做的一切都是通过GHCi完成的,但是,现在我正在尝试使用GHC编译,但是,我经常收到错误消息The IO action ‘main’ is not defined in module ‘Main’
,我已经尝试声明{ {1}}但是,我收到的错误更多,即main = do
行中的parse error on input ‘=’
。
以下是我正在使用的代码:
fib 0 = 1
提前感谢您的帮助!
答案 0 :(得分:4)
你应该写一些类似的东西:
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
函数不应缩进,应保持对齐。
答案 1 :(得分: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
请注意fib
函数中代码与上述代码之间的空格差异。
我已尝试声明
main = do
main = do
对编译器没有任何意义。请记住do
是monad的语法糖。 do
不是有效的表达。