Récemment Erik Meijer et d'autres d'autres ont montré comment Les autres interfaces doubles existent-elles? Je suis intéressé par un exemple, pas seulement .net basé. P> iobservable / iobserver code> est le Dual strong> de
iEnumerable / ienumerator code>. Le fait qu'ils soient dual signifie que toute opération d'une interface est valide sur l'autre, offrant ainsi une base théorique pour le extension réactive pour .NET p>
3 Réponses :
Un autre exemple serait textreader code> et
textwriter code>, bien qu'il y ait encore plus de bruit que dans le cas d'observables et d'énumérables. En principe, les signatures de type seraient:
Un autre exemple est le type de produit A.B et le type de type A + B de deux types A et B. Dans HASKELL, vous pouvez les écrire comme suit: P>
vérifier ici pour plus de détails P> Data Prod A B = P A B - Ceci est identique à celui du type de paire (A, B) CODE> P>
Somme de données A B = gauche A | B - la même chose que le type B B code> p>
Covariance et Contravariance en est un autre exemple. Je pense. Je pourrais avoir tort. P>
BART DE SMET dit : "Beaucoup de dualités existent dans Diverses disciplines, prévoyant de grands transferts de connaissances entre différents domaines. Par exemple, dans la logique formelle, la loi de Morgan permet de convertir des expressions construites à partir de conjonctions construites à partir de disjonctions, et inversement. Dans l'électronique, il existe entre le comportement des condensateurs et des inductances : connaissez-en un et comment aller et venir entre les domaines et vous connaissez l'autre. Fourier Calculus fournit duals entre les domaines de temps et de fréquence. " Intéressant. P>
Ils appellent également le système.Reactive le double du système.interactive. Donc, la plupart des fonctions de l'une des assemblées ont donc dual de l'autre. Pour clarifier, ce n'est pas seulement que l'IO est la double de c.-à-delle, mais les fonctions qui les utilisent sont également dualisées. P>
Pour répondre à votre question, de nombreuses interfaces dualisées existent. Vous pouvez dualiser n'importe quelle interface. Vous échangez simplement des entrées et des sorties et la direction de la fonction. Certains ne seront pas utiles ou seront la dual d'eux-mêmes. Cependant, parfois, il y a des cachés très puissants en attendant d'être découverts. P>
Soyez prudent avec le terme "double interface". Bien que l'utilisation du terme double i> est évidemment correcte ici, la phrase double interface i> est généralement associée à
itispatch code> et l'automatisation, qui est un peu déroutant (C'est ce que je pensais que cette question était à peu près avant que je l'ai ouverte).