如果我有一个价值a: Free[Op, A]
,是否有可能“扁平化”结构a
这样两个Op
被自由单子束缚在一起的 s 可以折叠成一个吗?
Context:我想在解释之前执行此操作作为优化步骤,因为语义Op
是它的操作是幂等的。因此,如果两个“连续”出现,则可以在不影响程序语义的情况下消除第二个。
据我了解,Free Monad 程序无法进行这种内省,因为它代表顺序计算,其中每个步骤都依赖于另一个步骤的结果。
John de Goes 有一篇关于 Free Monad 与 Free Applicative 优缺点的精彩演讲(https://www.youtube.com/watch?v=H28QqxO7Ihc https://www.youtube.com/watch?v=H28QqxO7Ihc)。后者赋予内省的力量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)