モナディックオブザーバブル/リアクティブパーサーを定義しています。これは連続クエリであるため、通常のパーサーとはまったく異なる動作をします。基になるタイプは次のとおりです。
IObservable<'a> -> IObservable<'b>
関数型言語でのさまざまなパーサーの実装を見ると、物事を定義するためのより適切な方法は、単一のケースで識別される共用体であるように思われます。
type Pattern<'a,'b> = Pattern of (IObservable<'a> -> IObservable<'b>)
つまり、基になる関数を抽出して使用する必要があります。
let find (Pattern p) = p
問題は、これは単なる慣例によるものなのか、それとも後の拡張を目的としたものなのか、それとも定義が変更されない場合でもこれを行う理由があるのかということです。
ボーナスの質問:より便利な型署名のためだけの場合は、型エイリアスを使用しないのはなぜですか?
type Pattern<'a,'b> = IObservable<'a> -> IObservable<'b>
私はこれをかなり進んでいますが、DUを使用しないことによって構成可能性が影響を受けるケースは見つかりませんでした。