Operator Precedenceテーブルを見ると、ラムダ式がこのすべてに適合するところで混乱します。テーブル1〜25に番号を付けると、ラムダ式を構成するために使用される2つのキートークンが表示されます。fun
は非結合6、->
は右結合8です。つまり、fun ... -> ...
です。これは、ラムダ式(->
の右辺)の本体で優先順位が役割を果たすかどうかわからないので、これは私が最初に理解している間違いかもしれません。私は、優先順位が表現全体で役割を果たすと考えることができます。私はそこに移動します。この表によれば、シーケンス演算子;
はfun
"演算子"よりも優先度が低く、4です。これは、私は信じてはラムダ式の優先順位を理解するのに役立ちます
fun (x:int) -> x + 3 ; 2;;
が
((fun (x:int) -> (x + 3)) ; 2);;
と同等である必要があり、まだそれは実際に私はによって与えられた優先のルールの私の解釈を明確に任意の助けに感謝
(fun (x:int) -> (x + 3 ; 2));;
と等価であることを述べています参照されるテーブルとラムダ式の優先順位の実際のルールありがとう!
私はテーブルが良くないことを知っていました(そしてスペックはあまり役に立たないです)!しかし、私は、シーケンス演算子の使用と優先ルールの深い理解の両方を得るための非常に良い理由があります。 F#パーサの助けを借りてみるか、fslex/fsyaccに慣れていない人は、まったく失われるでしょうか?優先ルールを把握するための他の提案はありますか?ありがとう! –
また、「MU」の略語はわかりません! –
http://en.wikipedia.org/wiki/Mu_(negative) – Brian