Смотрите неявный экспорт из модуля - PullRequest
3 голосов
/ 24 мая 2019

Довольно удивительно, я пытаюсь исправить предупреждение компиляции 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

Теперь я хочу поместить share в определенный модуль и точно контролировать, что я экспортирую из этого сгенерированного кода.

Я не знаю, как это генерирует PersonName и PersonAge!Я не как конкретно импортировать эти 2 типа, например ...

...