如何渲染带拼接的抢劫模板?

How do I render a heist template with splices?

我正在尝试使用 renderWithSplices - http://hackage.haskell.org/package/snap-1.0.0.0/docs/Snap-Snaplet-Heist.html#v:renderWithSplices

获取类型 Splices s 的值(对于 renderWithSplices 的第二个参数)的惯用方法是什么?

heist tutorial 有几个定义 Splices 类型的例子。

如果你点击上面 link 编辑的黑线鳕中的 Splices link,我们看到 Splices 定义如下:

type Splices s = MapSyntax Text s

如果您随后单击 MapSyntax link,您将转到 map-syntax 包的文档。这是一个小包,定义了一些更方便的创建地图的语法。顶部有一个示例,但一般模式如下:

mySplices = do
    k1 ## v1
    k2 ## v2

由于前面的定义告诉我们键是文本,我们可以执行以下操作来找出值的类型需要是什么:

someFunc = do
    ...
    renderWithSplices "my-template" mySplices
    ...

mySplices = do
    "foo" ## I.textSplice "bar"

如果您有足够新的 GHC(我认为是 7.8 或更高版本),最后一行的下划线将创建一个类型空洞并导致编译器告诉您该位置的事物类型应该是什么。然后你可以写那个类型的适当的东西,从那里做什么应该更明显。