私はF#ののV 1.9.6.2を使用している、と私は非常に単純な計算式を定義したしましょう実行されませんどのメソッドが計算式で呼び出されているか私は、次の文を実行すると、以下のよう計算式は
this.Let 12 this.Bind Some 12 this.Bind Some 11 this.Bind Some 30
しかし、私の実際の結果は次のとおりです:
maybe {
let x = 12
let! y = Some 11
let! z = Some 30
return x + y + z
}
を、私は、コンソールには、以下をプリントアウトすることを期待言い換えれば
this.Bind: Some 11 this.Bind: Some 30
を、 F#はLet
のメンバーを実行していないようです。 Let
を書き換えて例外をスローすると、コードは例外なく実行されます。また、Let
メンバー全員をコメントアウトすると、と表示され、The field, constructor or member 'Let' is not defined
というエラーメッセージが表示され、コードが期待通りに実行されます。
(私は反射板を使用してコードを調べてみましたが、通常そうであるようにしました、F#は、読みやすさを超えてマングルされて逆コンパイル。)
spec for computation expressionsが変更されているように見えます。 let
バインディングはもはやシンタックスシュガーとして扱われず、Let
メンバーはもはや計算ワークフローでは不要ですか?
は私が実際にそれらのリリース「私の質問を投稿する前に、しかしwasnノートを読んで:)ありがとうございます。おそらくモナドを示す例の100%がLetメンバーを定義しているので、 – Juliet