Yesod:有可能在Julius中迭代一个haskell列表吗?

时间:2012-05-21 13:46:05

标签: yesod hamlet

我有一个我需要放在地图上的坐标列表。是否有可能在julius中迭代列表?现在我正在哈姆雷特创建一个隐藏的表,并在julius中访问该表,这似乎不是一个理想的解决方案。 有人能指出更好的解决方案吗?感谢。

编辑:传递列表的JSON字符串(可以由julius读取)似乎解决了我的问题。

1 个答案:

答案 0 :(得分:2)

据我所知,你不能直接迭代julius中的列表。但是,您可以使用Javascript类型的Monoid实例来实现类似的效果。例如:

import Text.Julius
import Data.Monoid
rows :: [Int] -> t -> Javascript
rows xs = mconcat $ map row xs
  where
    row x = [julius|v[#{show x}] = #{show x};
|]

然后,您可以在通常放置julius块的任何地方使用rows xs。例如,在ghci中:

> renderJavascript $ rows [1..5] ()
"v[1] = 1;\nv[2] = 2;\nv[3] = 3;\nv[4] = 4;\nv[5] = 5;\n"