手册http://www.yesodweb.com/book/shakespearean-templates只是说“循环遍历列表 - 我们让你覆盖”。我不明白该语句中“列表”的确切语义。
它不是“任意类型的haskell表达式[something]
”:我不会写
main = putStrLn $ renderHtml [shamlet|
<ul>
$forall x <- reverse [ False, True ]
<li>#{x}
|]
似乎它必须是一个文字列表(在方括号中,元素用逗号分隔),但究竟什么是有效的列表元素?
它可能是数字文字 - 至少以下内容通过拼接
main = putStrLn $ renderHtml [shamlet|
<ul>
$forall x <- [ 0, 1 ]
<li>#{ x }
|]
但是编译器不喜欢它,因为(我认为)数字文字是多态的。通常的解决方法是在某处放置类型签名。但是哪里?