3

マニュアル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 }
|]

しかし、(私が思うに) 数値リテラルは多態的であるため、コンパイラはそれを好みません。通常の修正は、型シグネチャをどこかに置くことです。しかしここで?

4

1 に答える 1

1

一方、ソース コード ( https://github.com/yesodweb/shakespeare/blob/master/hamlet/Text/Hamlet/Parse.hs#L209 ) で関連する場所を見つけ、背後にあるものは<-https :/ /stackoverflow.com/a/20263640/2868481parseDeref

Data.Char.isSymbolとにかくこれは何ですか?ご参考までに、

import Data.Char
filter isSymbol [toEnum 0 .. toEnum 127]    ==>  "$+<=>^`|~"

それが意図した動作なのかどうか疑問に思います (hamlet/yesod の場合)。

于 2013-11-28T12:23:31.403 に答える