Проблемы с Haskell/Hamlet

Я новичок в Haskell, и я пытаюсь использовать деревню, но я не понимаю синтаксис правильно. Когда я использую этот код:

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}
module Handler.Index where

import Import
import Network.HTTP.Types.Status
import Database.Persist.Postgresql

getIndexR :: Handler Html
getIndexR = defaultLayout $ do
addStylesheet $ StaticR bootstrap_css
[hamlet|
        $doctype 5
        <html>
            <head>

            <body>

        |]

[cassius|
        .classe
            background: red;
        |]

Я получаю эту ошибку:

romefeller:~/workspace/yesodvazio (master) $ stack build && stack exec 
aulahaskell
aulahaskell-0.0.0: build (lib + exe)
Preprocessing library aulahaskell-0.0.0...
[8 of 9] Compiling Handler.Index    ( src/Handler/Index.hs, .stack-
work/dist/x86_64-linux/Cabal-1.24.2.0/build/Handler/Index.o )

/home/ubuntu/workspace/yesodvazio/src/Handler/Index.hs:18:17: error: parse 
error on input ‘<’

--  While building package aulahaskell-0.0.0 using:
  /home/ubuntu/.stack/setup-exe-cache/x86_64-linux/Cabal-
simple_mPHDZzAJ_1.24.2.0_ghc-8.0.2 --builddir=.stack-work/dist/x86_64-
linux/Cabal-1.24.2.0 build lib:aulahaskell exe:aulahaskell --ghc-options " -
ddump-hi -ddump-to-file"
Process exited with code: ExitFailure 1

Что мне не хватает? Нужно ли импортировать какую-либо библиотеку или что-то?

1 ответ

Вам необходимо включить:

{-# LANGUAGE QuasiQuotes #-}

вместо TemplateHaskell или же GHC пытается разобрать ваш [hamlet|...|] предложение, как если бы это было начало понимания списка, как это:

[ hamlet | hamlet <- ["alas", "poor", "yorick"] ]
^^^^^^^^^^ -- GHC thinks you're starting to write this
           -- and can't parse the rest.

(The TemplateHaskell расширение включает синтаксис квазицитат только для определенных типов квазицитат, которые он распознает, и пытается проанализировать все остальное как синтаксис понимания списка.)

Другие вопросы по тегам