у меня есть эти два модуля:Выводя Generic из данных, объявленных в другом файле не удается
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, и они оба ведут себя одинаково.
Я могу сделать эту функцию работоспособной, если поместить весь код в один модуль.
Может кто-нибудь объяснить, что здесь происходит, пожалуйста?
Попробуйте использовать песочницу. Я смог успешно построить ваши модули таким образом. – ErikR
@ user5402, какую версию ghc и зависимости вы используете? – coubeatczech
Я добавил информацию о версии в качестве ответа. – ErikR