0

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

我使用的框架封装了从Html ()到文件输出的转换,所以我想写一个函数来转换HtmlT (Reader MyEnv) ()Html ();就像是:

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

但是我还没有想出一个简单的方法来实现它。我错过了一些基本的东西,还是有解决方法?

4

1 回答 1

1

您可以使用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
于 2020-05-15T22:35:16.577 回答