运行包装在 HtmlT 中的阅读器,生成 Html()



我正在使用Lucid为静态站点生成代码,在HtmlT (Reader MyEnv)monad中编写代码以透明地传递存储在MyEnv中的一些配置。

我正在使用的框架封装了从Html ()到文件输出的转换,所以我想编写一个函数来将HtmlT (Reader MyEnv) ()转换为Html ();类似于:

withEnv :: MyEnv -> HtmlT (Reader MyEnv) () -> Html ()

但我还没有想出一个简单的方法来实现这一点。我是否缺少一些基本的东西,或者有解决方法?

您可以使用commuteHtmlT

commuteHtmlT :: HtmlT (Reader MyEnv) a -> Reader MyEnd (Html a)
runReader :: Reader a r -> a -> r
withEnv :: MyEnv -> HtmlT (Reader MyEnv) a -> Html a
withEnv e = ($ e) . runReader . commuteHtmlT

相关内容

  • 没有找到相关文章

最新更新