Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如何使用拼接渲染盗窃模板?_Haskell_Haskell Snap Framework_Heist - Fatal编程技术网

Haskell 如何使用拼接渲染盗窃模板?

Haskell 如何使用拼接渲染盗窃模板?,haskell,haskell-snap-framework,heist,Haskell,Haskell Snap Framework,Heist,我正在尝试使用带有拼接的渲染器 获取类型拼接的值的惯用方法是什么(对于渲染器的第二个参数,使用拼接)?有几个定义拼接类型的示例 如果您单击上面链接到的haddock中的拼接链接,我们会看到拼接的定义如下: type Splices s = MapSyntax Text s mySplices = do k1 ## v1 k2 ## v2 如果然后单击MapSyntax链接,您将转到MapSyntax包的文档。这是一个小软件包,定义了一些更方便的创建地图的语法。顶部有一个示例,

我正在尝试使用带有拼接的渲染器

获取类型
拼接
的值的惯用方法是什么(对于
渲染器的第二个参数,使用拼接
)?

有几个定义
拼接
类型的示例

如果您单击上面链接到的haddock中的
拼接
链接,我们会看到
拼接
的定义如下:

type Splices s = MapSyntax Text s
mySplices = do
    k1 ## v1
    k2 ## v2
如果然后单击
MapSyntax
链接,您将转到
MapSyntax
包的文档。这是一个小软件包,定义了一些更方便的创建地图的语法。顶部有一个示例,但一般模式如下:

type Splices s = MapSyntax Text s
mySplices = do
    k1 ## v1
    k2 ## v2
因为前面的定义告诉我们键是文本,所以我们可以执行以下操作来确定值的类型:

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

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

如果您有一个足够新的GHC(我认为是7.8或更高版本),最后一行上的下划线将创建一个类型孔,并导致编译器告诉您该位置中的对象的类型应该是什么。然后你就可以写那种类型的合适的东西,从那里应该可以更清楚地知道该怎么做。

我非常感谢你的回答,但是在多次尝试之后,我似乎对这种类型感到很失望(我对monad transformers没有太多经验,一直在与HeistT类型进行斗争)。关于
mySplices
-似乎
k1、v1、k2、v2
不能仅仅是字符串/文本值?如果没有更多的上下文(理想情况下是实际代码),我真的无法给出更好的答案关于您正试图如何使用盗窃。我很难理解如何获得示例中
v1
v2
Splice s
值。我试图只使用一个字符串,所以我最终认为我只需要
I.textplice
这样做:
“k1”##I.textplice“exampleValue”
。我认为如果你有一个实际值而不是一个类型孔(对于
k1
v1
等),那么答案会更清晰