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
等),那么答案会更清晰