Roh*_*rma 3 f# haskell functional-programming
我如何计算在Monad上应用bind的次数 - 给定状态monad的例子,我想计算状态改变的次数.我怎样才能最好地封装这个?这个逻辑应该是绑定运算符的一部分(因为它会增加计数而产生副作用)还是有更好的方法呢?
Dan*_*ner 15
你不能.其中一个monad法则是
return x >>= f = f x
Run Code Online (Sandbox Code Playgroud)
左边有一个绑定,右边没有绑定,所以没有守法的monad可以观察到有多少绑定.
充其量你可以采取行动
increment :: M ()
Run Code Online (Sandbox Code Playgroud)
在你的monad撞击一个柜台.(正如您所说,这可以使用StateT或类似,或者以其他几种基本上同构的方式实现.)
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |