我已经看过:=在几个代码示例中使用过,但从未附带过相应的解释.如果不知道它的正确名称,就不可能谷歌使用它.
它有什么作用?
我开始阅读关于CRDT的这篇论文,这是一种通过确保修改数据的操作是可交换的,同时共享可修改数据的方法.在我看来,这将是Haskell中抽象的一个很好的候选者 - 为CRDT提供一个类型类,指定数据类型和在该类型上通信的操作,然后使库实际上在并发进程之间共享更新.
我无法想象的是如何表达操作必须在类型类规范中通勤的合同.
举个简单的例子:
class Direction a where
turnLeft :: a -> a
turnRight :: a -> a
Run Code Online (Sandbox Code Playgroud)
不能保证和它turnLeft . turnRight一样turnRight . turnLeft.我认为后备是指定monad定律的等价物 - 使用注释来指定类型系统不强制执行的约束.