Я принял участие в коде от http://www.yesodweb.com/book/persistent (раздел Synopsis) и пытаюсь загрузить его в ghci (v7.6.3, работающий на Ubuntu 14,04).Ошибка анализа Haskell при использовании DataBase.Persist (возможно, связанная с использованием квазициклов)
import Database.Persist
import Database.Persist.Sqlite
import Database.Persist.TH
share [mkPersist sqlSettings, mkMigrate "migrateAll"]
[persistLowerCase|
Person
name String
age Int Maybe
deriving Show
BlogPost
title String
authorId PersonId
deriving Show
|]
При загрузке этого в GHCI, я получаю следующее сообщение об ошибке:
Prelude> :load "/home/gautham/tmp/Test.hs"
[1 of 1] Compiling Main (/home/gautham/tmp/Test.hs, interpreted)
/home/gautham/tmp/Test.hs:7:1:
parse error (possibly incorrect indentation or mismatched brackets)
Failed, modules loaded: none.
Prelude>
который является строкой, начинающейся с 'Персоной'. Любая идея, что может быть причиной этого? Я просмотрел несколько примеров в Интернете и попробовал несколько вариантов отступов, но не смог их скомпилировать. Я предполагаю, что это связано с неправильным использованием квазициклов, но я не уверен, что?
Приветствия Gautham
Спасибо! Я видел другие образцы кода без этих прагм и предполагал, что они просто комментарии. Он еще не компилируется, но он перемещается вперед от ошибки синтаксического анализа. Я попытаюсь поэкспериментировать с выборочным включением их, как только я его скомпилирую. –
@GauthamGanapathy Они используют тот же формат, что и комментарии, но они действительно являются специальными директивами, которые сообщают GHC о включении соответствующего расширения. Вам не нужно иметь их в исходном файле, но тогда вы должны сообщить GHC, какие расширения использовать с помощью флагов командной строки. – kqr
Просто хотел заметить, что '{- # LANGUAGE QuasiQuotes # -}' был тем, что мне не хватало. – sbditto85