Ich definiere eine monadische beobachtbare/reaktive Parser. Dies verhält sich anders als ein normaler Parser, da es sich um eine kontinuierliche Abfrage handelt. Der zugrunde liegende Typ ist:Zweck eines Einzelfall diskriminierten Union
IObservable<'a> -> IObservable<'b>
Von an verschiedenen Parser-Implementierungen in funktionalen Sprachen suchen, es scheint, als ob der geeignetere Weg, Dinge zu definieren ein einziger Fall diskriminierte Vereinigung ist:
type Pattern<'a,'b> = Pattern of (IObservable<'a> -> IObservable<'b>)
Was bedeutet, dass ich dann müssen die zugrunde liegende Funktion zu extrahieren, es zu benutzen:
let find (Pattern p) = p
die Frage ist: ist das nur durch Konvention, oder zum Zweck der späteren Erweiterung oder ist Gibt es einen Grund, dies zu tun, auch wenn sich die Definition niemals ändert?
Bonus Frage: Wenn es nur für eine bequemere Art Signatur ist, warum nicht nur eine Art Alias:
type Pattern<'a,'b> = IObservable<'a> -> IObservable<'b>
ich ziemlich weit durch diese vorgeschoben haben, und haben keinen Fall gefunden, wo die Zusammensetzbarkeit wird beeinflusst, wenn das DU nicht verwendet wird.
Danke, das ist eigentlich ein ziemlich konkreter Grund. Definitiv möchte nicht tippen "IObservable <'a> -> IObservable <'b>' überall anstelle von 'Muster <'a,'b>'. – yamen
Ein Follow-up viele Monde später. Ich habe der Union einen zweiten Fall hinzugefügt, und somit ist das Universum im Gleichgewicht. – yamen