【发布时间】:2023-03-14 14:13:01
【问题描述】:
documentation for Foldable 列出了“通用可折叠结构”所需的几个属性:
-
对于
foldr:对于一般的可折叠结构,这在语义上应该是相同的,
foldr f z = foldr f z . toList -
对于
foldl:对于一般的可折叠结构,这在语义上应该是相同的,
foldl f z = foldl f z . toList -
对于
foldl'(在我看来像是一个错字):对于一般的可折叠结构,这在语义上应该是相同的,
foldl f z = foldl' f z . toList
Foldable 的哪些实例不需要或不能保持这些属性?
【问题讨论】:
-
我认为应该阅读这些属性确实需要为所有表现良好的实例保留。不过不太确定。
-
我认为这些属性都是有规律的。
-
foldl法律仅适用于有限结构。对于无限的 snoc-list,foldl应该比这更好地定义。 -
我认为“对于一般的可折叠结构,这应该在语义上相同”只是“对于任何可折叠结构,这应该在语义上相同”,甚至“这应该在语义上相同”的迂回说法.
-
感谢 cmets!我想我会尽快提出一个不那么含糊的措辞。