2017-04-19 4 views
0

Yesod Import.hs에 가져올 관련된 유형을 찾을 수 없습니다 그것은 could not find E내가</p> <p><code>import Import</code></p> <p>을 가지고 있지만 어디 Import.hs</p> <p><code>import qualified Database.Esqueleto as E</code></p> <p>에하지만 내 처리기 파일에 넣어 가지고

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

답변

2

그건 불가능합니다. 정규화 된 수입의 주요 목적을 무효로합니다. 한정어 접두어는 무언가의 출처를 알려줍니다. 코드에 E.<.이 있으면 독자는 어디에서 왔는지 확인할 수 있기를 원합니다. Handler.MyProfile

  • 넣어 import qualified Database.Esqueleto as E 직접 :

    당신은 두 가지 옵션이 있습니다. 이것은 종종 가장 좋은 해결책입니다. 모든 소스 파일 상단에 다소 다루기 힘든 헤더가 생기지 만 장점은 모든 것이 어디서 오는지 바로 알 수 있다는 것입니다. 예, DRY에 위배됩니다. 그러나이 경우에도 그렇다고 생각합니다.

  • 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