非常令人惊讶的是,我试图通过显式添加为特定模块逐个导入的元素来修复编译警告missing-export-lists
,但是某种程度上,该模块隐式导出了我可以做到的神奇之处。找不到......
是否可以检索ghc隐式导出的内容?
这是我的问题的一个示例,Yesod正在使用TH和准引用生成一些代码:
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
import Control.Monad.IO.Class (liftIO)
import Database.Persist
import Database.Persist.Sqlite
import Database.Persist.TH
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
Person
name String
age Int Maybe
deriving Show
|]
那么,我们说我们以这种方式使用生成的代码:
people <- selectList
( [PersonAge >. 25, PersonAge <=. 30]
||. [PersonName /<-. ["Adam", "Bonny"]]
||. ([PersonAge ==. 50] ||. [PersonAge ==. 60])
)
[]
liftIO $ print people
现在,我想在特定的模块中分配份额,并精确控制我从生成的代码中导出的内容。
我不知道它是如何生成PersonName
和PersonAge
的!例如,我不打算具体导入这两种类型...