最近,Erik Meijer和其他人展示了IObservable/IObserver
是IEnumerable/IEnumerator
的对偶。它们是对偶的事实意味着任何一个接口上的操作在另一个接口上都是有效的,因此为Reactive Extentions for .Net提供了理论基础。
是否存在其他对偶接口?我对任何例子都感兴趣,不仅仅是基于.Net的。
最近,Erik Meijer和其他人展示了IObservable/IObserver
是IEnumerable/IEnumerator
的对偶。它们是对偶的事实意味着任何一个接口上的操作在另一个接口上都是有效的,因此为Reactive Extentions for .Net提供了理论基础。
是否存在其他对偶接口?我对任何例子都感兴趣,不仅仅是基于.Net的。
另一个例子是TextReader
和TextWriter
,尽管与可观察对象和可枚举对象相比,噪声更多。原则上,类型签名应该是:
interface ITextReader {
// Read: void -> int
int Read();
}
interface ITextWriter {
// Write: int -> void
void Write(int val);
}
data Prod a b = P a b -- 这与对偶类型(a,b)相同
data Sum a b = Left a | Right b -- 与Either a b类型相同
详情请查看这里。
IDispatch
和自动化相关联,这有点令人困惑(这就是我在打开这个问题之前所想的)。 - Aaronaught