自由单子是具有接口的单子吗?

4
我一直在阅读关于自由单子的一些 材料, 虽然我认为我离实现还有很大的距离,但我认为我更接近了解它们的本质!
根据以上资源,我的理解是自由单子可以“释放”“计算”工作中的“单子”(一种数据类型)。换句话说,自由单子提供了像joinmap这样的接口,客户端将自己实现它们。

2
“Free”是一个形容词,意味着一个对象是正在讨论的结构的最小对象。因此,自由单子是一个“最简单”的单子;它没有其他可辨别的属性,除了成为单子所需的属性。只要f是一个函子,那么给定data Free f r = ...,则Free f就是一个单子,而无需考虑f到底是什么。 - chepner
1个回答

2

换句话说,自由单子提供了join和map等接口,客户端将自己实现这些接口?

从某种意义上来说是的。但我认为更好的表述方式是:“一个自由单子提供了一种语言,而其实例则实现了该语言的不同解释器。”

单子是自由的,因为它没有受到任何其他约束,只受到单子法则的限制。它的实例不是自由的,因为特定的解释会添加额外的约束。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接