我有这两个模块:
module Server where
import Data.JSON.Schema.Generic (gSchema)
import Data.JSON.Schema.Types (JSONSchema(schema))
import Two
instance JSONSchema Data where
schema = gSchema
main :: IO ()
main = undefined
{-# LANGUAGE DeriveGeneric #-}
module Two where
import GHC.Generics (Generic)
data Data = Data {
scName :: String
} deriving Generic
在尝试构建包含这两个文件的项目时,链接阶段的 ghc 会抛出几个如下所示的错误:(它们仅在 (.data+0XXXX) 部分不同)。
dist/dist-sandbox-190abc84/build/libHSserver-0.1.a(Server.o):(.data+0x1b8): undefined reference to `serverzm0zi1_Two_zdfGenericData_closure'
最后的信息是:
collect2: error: ld returned 1 exit status
我用 ghc 7.8.3 和 7.6.3 进行了尝试,它们的行为都相似。
如果将所有代码放入一个模块中,我可以使此功能正常工作。
谁能解释一下,这里发生了什么?