无法在Yesod import.hs中找到与导入有关的类型



我已经输入了import.hs

import qualified Database.Esqueleto as E

但是在我的处理程序文件中

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")

这是不可能的。这将击败合格进口的主要目的:预选赛前五十件告诉您来自何处的事情。如果您的代码中有E.<.,读者希望能够查看它来自何处!

您有两个选择:

  • import qualified Database.Esqueleto as E直接放在Handler.MyProfile中。这通常是最好的解决方案 - 虽然它导致每个源文件之上的笨拙的标头,但优势是,一个人立即看到了一切的来源。是的,它违反了干燥,但我认为在这种情况下这是合理的。
  • 为Esqueleto东西制作专用的"导入模块"。而且,如有必要,对于您拥有的任何其他进口标级前缀

    module Import.Esqueleto where -- package-local, hidden module
    import Database.Esqueleto
    import Database.Esqueleto....
    module Handler.MyProfile where
    import qualified Import.Esqueleto as E
    

最新更新