最近埃里克*梅耶尔和其他人展示如何 IObservable/IObserver 是的 IEnumerable/IEnumerator.事实上,他们是双重意味着,任何操作上的一个接口是否有效,因此提供了理论基础 反应的扩张。净

做其他的双接口的存在吗?我感兴趣的任何例如,不公正的。净基础。

有帮助吗?

解决方案

另一个例子就是 TextReaderTextWriter, 虽然有更多噪音,比的情况下观测量和enumerables.原则上的类型签名的是:

interface ITextReader {
  // Read: void -> int
  int Read();
}

interface ITextWriter {
  // Write: int -> void
  void Write(int val);
}

其他提示

另一个例子是产品类型A.B和总和类型的A+B两种类型的A和B。在Haskell,你可以把它们写为:

data Prod a b = P a b -- this is the same as the pair type (a,b)

data Sum a b = Left a | Right b -- the same as the Either a b type

检查 在这里, 对于细节

协变和逆变的是另一个例子。我认为。我可能是错误的。

巴特De Smet说:"大量的二元性存在各种学科,提供了伟大的知识转让之间的不同领域。例如,在正式的逻辑,De摩根的法律允许的转换表达建成连词入的内从分离,反之亦然。在电子产品中,相似之间存在的行为的电容器和电感:知道的和怎样去回域之间,你知道。傅里叶微积分提供双倍时间和频率之间域。" 有趣的。

他们还呼吁系统。反应的双重的系统。互动。所以大部分的功能于一体的大会有双重的。为了澄清,这不仅仅是那IO是双重的,即,但功能,对它们也是dualized.

所以回答你的问题,许多dualized的接口存在。你可以和任何接口。你只是换输入和输出和方向的功能。某些不会是有用的,或者将是双重的自己。但是,有时存在真正强大的隐藏等待着被发现。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top