Yesod:是否可以在 Julius 中迭代 Haskell 列表?

标签 yesod hamlet

我有一个需要放在 map 上的坐标列表。朱利叶斯是否可以迭代列表?现在我正在 hamlet 中创建一个隐藏表并在 julius 中访问该表,这似乎不是一个理想的解决方案。
有人可以指出更好的解决方案吗?谢谢。

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

最佳答案

据我所知,你不能直接在 julius 中迭代一个列表。但是,您可以将 Monoid 实例用于 Javascript键入以实现类似的效果。例如:

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};
|]

那么你可以使用rows xs您通常会放置朱利叶斯块的任何地方。例如,在 ghci 中:
> renderJavascript $ rows [1..5] ()
"v[1] = 1;\nv[2] = 2;\nv[3] = 3;\nv[4] = 4;\nv[5] = 5;\n"

关于Yesod:是否可以在 Julius 中迭代 Haskell 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10686483/

相关文章:

haskell - Fay 代码中的持久模型类型

linux - Haskell Yesod 问题

haskell - 使用 hamlet 渲染静态 HTML

haskell - yesod 中的 id 属性

haskell - 如何将 "details"来自哈姆雷特列表中的单独查询合并?

haskell - 为持久实体创建 ToJSON 实例

sql - Haskell 对日期的持久查询 (Yesod)

javascript - 将编译的 Julius 模板公开为单独的文件,而不是直接将它们放入 DOM 中

multithreading - 在 Yesod 中运行 future 服务