Haskell 如何更新本地单子

Haskell 如何更新本地单子,haskell,yesod,Haskell,Yesod,我正在使用Yesod,需要临时修改approt,以便renderUrl生成本地路由(即从/开始),而不是全局路由(包括主机) 一种方法是使用approtRelative覆盖approot,并调用renderUrl。然而,我在单子中,所以我不确定如何获得一个“对象”,修改它的approt并调用renderUrl。没有任何简单的方法可以做到这一点。您必须了解HandlerT值的内部结构,然后替换其呈现函数。在域名上执行类似于Data.Text.replace的操作可能会更容易(尽管请不要做一些鲁莽的

我正在使用Yesod,需要临时修改
approt
,以便
renderUrl
生成本地路由(即从
/
开始),而不是全局路由(包括主机)


一种方法是使用
approtRelative
覆盖
approot
,并调用
renderUrl
。然而,我在单子中,所以我不确定如何获得一个“对象”,修改它的
approt
并调用
renderUrl

没有任何简单的方法可以做到这一点。您必须了解
HandlerT
值的内部结构,然后替换其呈现函数。在域名上执行类似于
Data.Text.replace
的操作可能会更容易(尽管请不要做一些鲁莽的操作…)。我找到了一个使用
renderRoute
的解决方法,无法临时修改应用程序设置是很烦人的。你能添加你的解决方案作为答案吗?没有任何简单的方法可以做到这一点。您必须了解
HandlerT
值的内部结构,然后替换其呈现函数。在域名上执行类似
Data.Text.replace
之类的操作可能更容易(尽管请不要做一些急躁的事情…)。我使用
renderRoute
找到了一个解决方法,无法临时修改应用程序设置很烦人。你能添加你的解决方案作为答案吗?