gpt4 book ai didi

haskell - 从解释型抢劫到编译型抢劫

转载 作者:行者123 更新时间:2023-12-02 17:11:41 24 4
gpt4 key购买 nike

我似乎无法理解编译后的抢劫概念。网上没有任何例子。我将如何将简单的代码片段从解释更改为编译。

例如:

listUsersH :: AppHandler ()
listUsersH = do
users <- liftIO $ getColList "users"
let userListS = mapSplices userLinkS users
heistLocal (bindSplice "users" userListS) $ render "list-users"
where
userLinkS d = runChildrenWithText [("user",T.pack $ at "uname" d)]

如何将“runChildren”、“mapSplices”、“bindSplice”和“render”与编译后的抢劫进行简单组合?

我知道这个概念是不同的,并且没有“heistLocal”..但我现在需要回去并重新学习如何做基本的事情,例如以“foreach”循环方式显示一堆记录。有人可以澄清这一点并展示一个像上面那样但带有编译抢劫的简单示例吗?

目前我什至不知道如何通过编译的抢劫进行简单的变量替换。例如,这个:

simpleString = "Insert me..."
insertString = heistLocal (bindSplices spl) $ render "tst"
where
spl = [("var", textSplice simpleString)]

请有人帮助我了解基础知识,或者向我指出一个包含一些最小示例的位置。我确实阅读了 snap 网站文档。

最佳答案

编译的拼接肯定更难使用。其一,所有接头必须在前面静态绑定(bind)。这需要观念上的重大转变。之前,使用 heistLocal 您可以将拼接视为范围有限的事物,可以在需要时进行绑定(bind)。您可以使用请求中的信息在处理程序中做出决定,然后相应地绑定(bind)拼接。您仍然可以使用编译的拼接执行类似的操作,但它需要控制反转。现在,您必须在 splice 内部进行基于请求的动态决策(这是围绕处理程序 monad 的 monad 转换器,因此您仍然可以访问处理程序函数)。

我建议将编译的拼接视为全局资源,您可以将其提供给网页设计人员,他们可以在任何页面上使用他们认为合适的方式。以这种方式查看接头有几个优点。首先,与与 heistLocal 绑定(bind)的专门拼接相比,它使它们更加正交和可组合。其次,它使调试更容易,因为您永远不必担心拼接是否已绑定(bind)。

但是编译拼接的最大困难是由加载时间和运行时之间的划分以及这对拼接函数意味着什么造成的。我们在 wiki 页面的最后一部分关于 migrating to Heist 0.10 对此进行了一些讨论。 。我们还有a longer discussion of the "why"这背后。

我们还在努力改进编译 Heist 的 API。我们非常接近完成 Heist 0.13,它显着简化了 API,应该有助于让事情变得更容易理解。目前的代码在 new-api github 上的分支已经接近准备发布。

关于haskell - 从解释型抢劫到编译型抢劫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17049724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com