无法在Haskell中获取主函数进行编译

时间:2015-10-01 21:47:48

标签: haskell compilation main

我对Haskell相对较新,我所做的一切都是通过GHCi完成的,但是,现在我正在尝试使用GHC编译,但是,我经常收到错误消息The IO action ‘main’ is not defined in module ‘Main’,我已经尝试声明{ {1}}但是,我收到的错误更多,即main = do行中的parse error on input ‘=’

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

fib 0 = 1

提前感谢您的帮助!

2 个答案:

答案 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不是有效的表达。