Bunun gibi yerleşik bir şey olduğunu sanmıyorum. Neyse ki, Hamlet'in yardımcı işlevlerini kullanmak kolaydır. Örneğin, öğeleriniz düz dizelerse, aralarında virgül eklemek için yalnızca Data.List.intercalate
'u kullanabilirsiniz.
The values in the list are
#{intercalate ", " list}
and that is it.
Eğer meraklı şeyler yapmak isterseniz, Hamlet değerleriyle çalışmak için işlevler yazabilirsiniz. Örneğin, burada bir listede virgül ve Hamlet değerleri arasında "ve" ekleyen bir işlev var.
commaify [x] = x
commaify [x, y] = [hamlet|^{x} and ^{y}|]
commaify (x:xs) = [hamlet|^{x}, ^{commaify xs}|]
Bu başka bir bir Hamlet değeri eklemek için ^{...}
sözdizimini kullanır. Şimdi, altı çizili kelimelerin virgülle ayrılmış bir listesini yazmak için kullanabiliriz. İşte
The values in the list are
^{commaify (map underline list)}
and that is it.
, underline
sadece düz metin daha ilginç bir şey üretmek için küçük bir yardımcı fonksiyonudur.
underline word = [hamlet|<u>#{word}|]
İşlendiğinde, bu aşağıdaki sonucu verir.
The values in the list are <u>foo</u>, <u>bar</u> and <u>baz</u> and that is it.
Teşekkürler, bu iyi bir çözüm koleksiyonudur, ancak hiçbiri Template Haskell'in sağladığı kadar tatmin edici değildir. Belki de mezara "özel" bir döngü için bir yama göndermeliyiz. –