我已经放入了Import.hs
import qualified Database.Esqueleto as E
但是在我的Handler文件中我有
import Import
但它无法找到E
module Handler.MyProfile where
import Import
getMyProfileR :: Handler Html
getMyProfileR = do
now <- liftIO getCurrentTime
wordList <- (runDB $ E.select $ E.from $ \v -> do
where_ (v ^. VocabularyDate E.<. val now)
return v)
defaultLayout $ do
$(widgetFile "myprofile")
答案 0 :(得分:2)
那是不可能的。它会破坏合格导入的主要目的:限定符前缀告诉你某些东西来自哪里。如果您的代码中有E.<.
,那么读者希望能够看到它的来源!
您有两种选择:
import qualified Database.Esqueleto as E
直接放在Handler.MyProfile
中。这通常是最好的解决方案 - 虽然它会在每个源文件的顶部导致一些笨重的标题,但优点是可以立即看到所有内容的来源。是的,它违反了DRY,但我认为在这种情况下它是合理的。为esqueleto的东西制作一个专用的“导入模块”。并且,如果有必要,可以使用任何其他import-qualifier前缀。
module Import.Esqueleto where -- package-local, hidden module
import Database.Esqueleto
import Database.Esqueleto....
module Handler.MyProfile where
import qualified Import.Esqueleto as E