Pet*_*lák 17 monads haskell free-monad
该免费MonadPlus定义为
data Free f a = Pure a | Free (f (Free f a)) | Plus [Free f a]
Run Code Online (Sandbox Code Playgroud)
已使用以下注释(changelog)在free 4.6 中删除:
删除了
Control.MonadPlus.Free.使用FreeT f []来代替,而结果将是守法的.
问题是什么,特别是哪些法律没有?
dfe*_*uer 13
根据bug跟踪器中的这个问题,旧定义不遵守关联法则.
虽然我对这些事情知之甚少,但我怀疑另一个问题是冗余:
Pure a
Plus [Pure a]
Plus [Plus [Pure a]]
...
Run Code Online (Sandbox Code Playgroud)
所有似乎都代表着同样的事情.自由结构通常被认为是独特的.有些时候它们不能被唯一地表示(例如,自由的阿贝尔群体),但是在可能的情况下它们应该是.
实际上,我认为建议的替代方案会遇到同样的问题,尽管可能有可能通过使用NonEmpty而不是来修复它[].因此,这种改变可能只是从库中消除多余的瑕疵.
| 归档时间: |
|
| 查看次数: |
266 次 |
| 最近记录: |