我有两个名为SimpleJSON.hs的haskell文件,另一个是Main.hs
--File: SimpleJSON.hs
module SimpleJSON
(
JValue (..)
,getString
,getInt
,getDouble
,getBool
,getObject
,getArray
,isNull
) where
data JValue = JString String
| JNumber Double
| JBool Bool
| JNull
| JObject [(String, JValue)]
| JArray [JValue]
deriving (Eq, Ord, Show)
还有
--File: Main.hs
module Main () where
import SimpleJSON
main = print (JObject [("foo", JNumber 1), ("bar", JBool False)])
所以在编译时 我在做
ghc -c SimpleJSON.hs
和
ghc simple Main.hs SimpleJSON.o
那我就报错了
Main.hs:1:1: error:
The IO action ‘main’ is not exported by module ‘Main’
|
1 | module Main () where
| ^
如何解决此编译错误?
答案 0 :(得分:7)
应该是
module Main where
或
module Main (main) where
答案 1 :(得分:1)
此答案专门针对Real World Haskell的读者。该书似乎使用了Haskell的较旧版本,其中main
不需要在导出列表中明确提及。在最新版本中,情况不再如此。
需要提到两个方面:
module Main (main) where
以便导出main
SimpleJSON.hs
的目标文件并在编译Main.hs
时提及它,即只需运行ghc -o simple Main.hs
就足够了作为一般说明,对Amazon page for the book的一些评论提到书中涉及的某些方面已过时。因此,如果您正在关注本书,则可以使用其他资源来弥补差异。