运行已编译的Haskell程序:

时间:2014-06-18 23:39:51

标签: haskell

data Figura = Circulo Float | Rectangulo Float Float


esRedondo :: Figura -> Bool
esRedondo (Circulo _) = True
esRedondo (Rectangulo _ _) = False 

area :: Figura -> Float
area (Circulo r) = pi*r*r
area (Rectangulo h b) = h*b

我收到错误: The function main'未在模块“Main”中定义

3 个答案:

答案 0 :(得分:5)

如果要创建可运行的可执行文件,则需要定义main :: IO (),这将在程序运行时执行。

答案 1 :(得分:2)

如果您使用ghc,这可能是您想要做的。做ghci yourprogram.hs。这将允许以交互方式与您的程序进行交互。你的程序目前没有做任何事情,所以这会更有用。

答案 2 :(得分:0)

发生这种情况有两个原因:

  • 您尚未在文件中指定模块名称,当您未指定模块时,GHC会假定您在Main模块中。
  • 您尚未指定Haskell程序的入口点,即main function

这两个原因的总和给出了错误:main模块中没有Main函数。

一种解决方案可能是添加main功能:

main :: IO ()
main = return () -- do nothing

或者,替代地,将您的文件编译为库,然后将其加载到ghci(或者只加载.hs中的ghci文件。在这种情况下,您应该为库提供模块名称:

module Geometry where
[...]

然后将其导入到import Geometry使用它的位置。