Я построил базовый шаблон yesod следующим образом:
stack new kek yesod-simple
stack build
это было нормально. После этого я попытался добавить обработчик, следуя этому руководству, часть echo
:
Я добавил
/echo/#String EchoR GET
в config/routesЯ также добавил следующий обработчик в Home.hs
getEchoR :: String -> Handler RepHtml getEchoR theText = do defaultLayout $ do [whamlet|<h1>#{theText}|]
Когда я снова попробовал stack build
, я получил следующую ошибку:
[8 of 9] Compiling Handler.Home ( src/Handler/Home.hs, .stack-work/dist/x86_64-linux-nopie/Cabal-1.24.2.0/build/Handler/Home.o )
/home/kek/me/haskell/webservices/lol/src/Handler/Home.hs:72:23: error: parse error on input ‘{’
-- While building package lol-0.0.0 using:
/home/kek/.stack/setup-exe-cache/x86_64-linux-nopie/Cabal-simple_mPHDZzAJ_1.24.2.0_ghc-8.0.2 --builddir=.stack-work/dist/x86_64-linux-nopie/Cabal-1.24.2.0 build lib:lol --ghc-options " -ddump-hi -ddump-to-file"
Process exited with code: ExitFailure 1
Я просто скопировал эту строку whamlet[...]
из туториала, все остальное генерируется по шаблону yesod-simple, ничего не менял.
upd: мне удалось заставить его работать, изменив код обработчика на следующий:
getEchoR :: String -> Handler RepHtml
getEchoR theText = do
defaultLayout $ do
setTitle "My Awesome Site"
$(widgetFile "echo")
И добавить пример файла echo.hamlet
в /templates/
<!-- Static navbar -->
<nav .navbar.navbar-default.navbar-static-top>
<div .container>
<div .navbar-header>
<button type="button" .navbar-toggle.collapsed data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<div #navbar .collapse.navbar-collapse>
<ul .nav.navbar-nav>
<ul .nav.navbar-nav.navbar-right>
<!-- Page Contents -->
<div .container>
<!-- Footer -->
<footer .footer>
<div .container>
<p .text-muted>
Поэтому мой вопрос меняется на следующий: обязан ли я это делать в данном случае?
{-# LANGUAGE QuasiQuotes #-}
(и, возможно, TemplateHaskell OverloadedStrings, TypeFamilies) - person unhammer   schedule 29.11.2017[whamlet|<h1>#{theText}|]
– это квазицитата а>) - person unhammer   schedule 29.11.2017