Pregunta

Recientemente Erik Meijer y otros tienen IObservable/IObserver mostrar cómo es la doble de IEnumerable/IEnumerator. El hecho de que son medios duales que cualquier operación en una interfaz es válido en el otro, proporcionando así una base teórica para la Reactive Extentions para .Net

Existen hacer otras interfaces duales? Estoy interesado en cualquier ejemplo, no sólo en base .Net.

¿Fue útil?

Solución

Otro ejemplo sería TextReader y TextWriter, aunque hay incluso más ruido que en el caso de observables y enumerables. En principio, las firmas de tipos serían:

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

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

Otros consejos

Otro ejemplo es el A.B tipo de producto y el tipo de suma A + B de dos tipos A y B. En Haskell se puede escribir como:

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

aquí para más detalles

Covarianza y contravarianza es otro ejemplo. Yo creo que. Podría estar equivocado.

Bart De Smet dice : "existen porciones de dualidades en diversas disciplinas, proporcionando grandes transferencias de conocimiento entre diferentes dominios. por ejemplo, en la lógica formal, la ley de de Morgan permite convertir expresiones construidas a partir de conjunciones en los construidos a partir disyunciones, y viceversa. en electrónica, existen similitudes entre el comportamiento de los condensadores e inductancias : conocerse y cómo ir y venir entre dominios, y usted sabe que la otra Fourier cálculo proporciona duales entre los dominios de tiempo y frecuencia ".. Interesante.

También llaman System.Reactive el dual de System.Interactive. Así que la mayoría de las funciones en uno de los conjuntos tiene su doble en el otro. Para aclarar, no se trata sólo de que IO es el dual de IE, pero las funciones que operan sobre ellos también están dualizada.

Así que para responder a su pregunta, existen muchas interfaces dualizado. Puede dualizar cualquier interfaz. Usted sólo cambio entradas y salidas y la dirección de la función. Algunos no sea útil, o será el doble de sí mismos. Sin embargo, a veces no son los realmente potentes que ocultan la espera de ser descubierto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top