Yesod 책 (10 장)에서 Persistent 예제를 실행하려고합니다. 나는 .hs 파일에 초기 예제를 입력하고, 카발 파일을 만들고, 컴파일을 시도했다. 컴파일러는 "persist"를 찾을 수 없다고 불평합니다. 나는 함수가 새로운 패키지 (내가 포함하지 않은)로 옮겼거나 더 이상 사용되지 않는다고 추측하지만, 어떤 키워드와 hoogle이이 문제에 관해 밝혀지지 않았는지 모르겠습니다. 어떤 도움이라도 대단히 감사 할 것입니다. 아마 나는이 책이 바탕으로 한 Yesod의 버전으로 되돌아 가야한다. 어떤 yesod-platform을 설치해야합니까? 내 chapter10.cabal 파일 여기Yesod book의 첫 번째 영구 예제가 컴파일되지 않습니다. persist를 찾을 수 없습니다.
perry$ cabal install
Resolving dependencies...
Configuring chapter10-0.1.0.0...
Building chapter10-0.1.0.0...
Preprocessing executable 'chapter10' for chapter10-0.1.0.0...
[1 of 1] Compiling Main (ex1.hs, dist/build/chapter10/chapter10-tmp/Main.o)
ex1.hs:8:55: Not in scope: `persist'
cabal: Error: some packages failed to install:
chapter10-0.1.0.0 failed during the building phase. The exception was:
ExitFailure 1
: 여기
-- Initial chapter10.cabal generated by cabal init. For further
-- documentation, see http://haskell.org/cabal/users-guide/
name: chapter10
version: 0.1.0.0
license-file: LICENSE
cabal-version: >=1.8
build-type: Simple
executable chapter10
main-is: ex1.hs
-- other-modules:
build-depends: base ==4.5.*
, yesod-platform
, yesod
, persistent-sqlite
, transformers
, persistent-template
, persistent
내 ex1.hs이 파일입니다 덕분에, 여기
팀
는 오류 메시지입니다{-# LANGUAGE QuasiQuotes, TemplateHaskell, TypeFamilies, OverloadedStrings #-}
{-# LANGUAGE GADTs, FlexibleContexts #-}
import Database.Persist
import Database.Persist.Sqlite
import Database.Persist.TH
import Control.Monad.IO.Class (liftIO)
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persist|
Person
name String
age Int Maybe
deriving Show
BlogPost
title String
authorId PersonId
deriving Show
|]
main :: IO()
main = withSqliteConn ":memory:" $ runSqlConn $ do
runMigration migrateAll
johnId <- insert $ Person "John Doe" $ Just 35
janeId <- insert $ Person "Jane Doe" Nothing
insert $ BlogPost "My fr1st p0st" johnId
insert $ BlogPost "One more for good measure" johnId
oneJohnPost <- selectList [BlogPostAuthorId ==. johnId] [LimitTo 1]
liftIO $ print (oneJohnPost :: [Entity BlogPost])
john <- get johnId
liftIO $ print (john :: Maybe Person)
delete janeId
deleteWhere [BlogPostAuthorId ==. johnId]
다음은 제 yesod 및 영구 패키지의 버전입니다.
perry$ ghc-pkg list| grep -i -e yesod -e persist
persistent-1.2.0.1
persistent-sqlite-1.2.0
persistent-template-1.2.0.1
yesod-1.2.1
yesod-auth-1.2.0.1
yesod-core-1.2.2
yesod-form-1.3.0
yesod-persistent-1.2.1
yesod-platform-1.2.1
yesod-routes-1.2.0.1
yesod-static-1.2.0
yesod-test-1.2.0
아 ... 이전 문서를 확인한 적이 없었습니다. 방금 1.2.0.0과 1.2.0.1을 보았습니다. 나를 생각해 줘서 고마워! – tim93422