【发布时间】:2016-04-15 14:38:36
【问题描述】:
我想使用 Yesod 中的莎士比亚模板(Licius + Hamlet + Julius)。但我对此有一些困难。来自enter link description here 的以下代码有效:
type TestAPI
= "tests" :> Get '[JSON] [Test]
:<|> "test" :> Get '[JSON] Test
:<|> "TestHTML.html" :> Get '[HTML] Page_TestHTML
serverTestAPI :: ServerT TestAPI AppM
serverTestAPI = tests
:<|> test
:<|> testHtml
data Page_TestHTML = Page_TestHTML
instance ToMarkup Page_TestHTML where
toMarkup Page_TestHTML = builderHtml
testHtml = return Page_TestHTML
builderHtml = [shamlet|
$doctype 5
<html>
<head>
<title>Greeting2
<body>
<h2> Hello world HTML Qqqqq |]
但下一个代码不起作用:
data Page_TestHTML_2 = Page_TestHTML_2
instance ToMarkup Page_TestHTML_2 where
toMarkup Page_TestHTML_2 = builderHtml_2
testHtml_2 = return Page_TestHTML_2
builderHtml_2 = do
$(luciusFile "templates/test/TestHTML2.lucius")
$(shamletFile "templates/test/TestHTML2.hamlet")
我如何为仆人构建 Licius + Hamlet + Julius(没有整个 Yesod)?
【问题讨论】:
-
你能添加你得到的编译器错误吗?
-
错误:无法将预期类型 't0 -> Css' 与实际类型 'blaze-markup-0.7.0.3:Text.Blaze.Internal.MarkupM a0' 匹配 lambda 表达式 '\ _render_alwD - > (shakespeare-2.0.8:Text.Css.CssNoWhitespace . (foldr ($) ...)) ...'
-
人们什么时候会知道省略类型签名不是一个好主意?
-
嗯,不需要类型签名的事实是 Haskell 的一个卖点。所以难怪人们会使用这个“功能”
-
@mb14 也许卖家应该在他的small print中添加“只要你不动手”;)
标签: haskell yesod hamlet servant