3

Gabriel Gonzalez 在他的博客文章中描述了一种使用免费 monad 净化代码的方法。假设我们有FreeMonadIO a,那么我们可以编写不同的解释器,例如,一种用于测试目的,一种用于实际 IO。

我想知道是否可以为Arrows. 之类的东西FreeArrowIO a b,这将是具有副作用和显式输入的计算的纯粹表示,然后可以以不同的方式解释(其中之一是 IO)。

我知道我可以写类似的东西FreeArrowIO = Kleisli FreeMonadIO,但是有没有办法跳过 monad 步骤并直接定义 FreeArrowIO?

4

0 回答 0