私はモナディの観測可能/反応性パーサーを定義しています。これは、連続したクエリであるため、通常のパーサとはまったく異なる動作をします。根本的なタイプは次のとおりです。単一ケースの識別ユニオンの目的
type Pattern<'a,'b> = Pattern of (IObservable<'a> -> IObservable<'b>)
Iを意味:物事を定義するためのより適切な方法は、単一のケースが区別組合であるかのように関数型言語における様々なパーサの実装を見てから
IObservable<'a> -> IObservable<'b>
が、それはそう
let find (Pattern p) = p
質問は次のとおりです:これはちょうど慣例によるのか、それとも後での拡張の目的のためか、定義が決して変更されない場合でもこれを行う理由はありますか?
ボーナス質問:私はかなり方法この通って進めてきた、とケースどこを発見していない
type Pattern<'a,'b> = IObservable<'a> -> IObservable<'b>
:それはちょうどより便利なタイプの署名のためなら、なぜだけでなく、型の別名を使用します合成可能性は、DUを使用しないことによって影響を受ける。
ありがとう、それは実際にはかなり具体的な理由です。間違いなく 'Pattern <'a,'b>'の代わりに 'IObservable <'a> - > IObservable <'b>'と入力したくないのです。 – yamen
後にフォローアップする。私は組合に2番目のケースを追加することになり、したがって宇宙はバランスを取っています。 – yamen