1
私はこのコードを持っているPersistentチュートリアル、従うことをしようとしている:Haskellのエラー参照コードがコードに含まれていませんか?
{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
import Database.Persist
import Database.Persist.TH
import Database.Persist.Sqlite
import Control.Monad.IO.Class (liftIO)
mkPersist sqlSettings [persistLowerCase|
Person
name String
age Int
deriving Show
|]
をしかし、私はそれを実行しようとすると、私が取得:
src/model.hs:31:1: error:
• Illegal instance declaration for ‘ToBackendKey SqlBackend Post’
(Only one type can be given in an instance head.
Use MultiParamTypeClasses if you want to allow more, or zero.)
• In the instance declaration for ‘ToBackendKey SqlBackend Post’
そして、それらの宣言(ToBackendKey
など)されています私のコードではなく、31行目ではありません。何が起こっていますか?私はそれがTemplateHaskellに関連していると感じていますが、これを理解するには十分に分かりません。これをどのようにデバッグできますか?
'TemplateHaskell'はコンパイル時にコードを生成します。そのコードはまだコンパイルする必要があります。ここで、Template Haskellは、コンパイルを有効にしたよりも多くの拡張を必要とするコードを生成しています。 – Alec
おそらくこのチュートリアルでは、既にリストされている拡張機能にその拡張機能を追加するのを忘れていました。有効にするだけでOKです。 – chi