语境
我目前正在阅读有关 Clojure 对 monads 的实现:org.clojure/algo.monads
直观地说,reduce 看起来像是应用于地图的 state-m。基本上,有一个“状态”,它是迄今为止的价值。
现在,我无法以“标准方式”完成这项工作,因为:
(domonad state-m
[ ... I can only stuff a constant number of things here ...
... but I need to stuff here a list whose size is only known at run time ... ]
..)
问题
有没有办法使用 state-m 将 reduce 实现为 monad?
我知道我永远不会在实践中使用它,这纯粹是为了启蒙+更好地理解事物如何组合在一起。
谢谢!