Проблемы с 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
расширение включает синтаксис квазицитат только для определенных типов квазицитат, которые он распознает, и пытается проанализировать все остальное как синтаксис понимания списка.)