p = let x = 1 in x + 1、let y = 2 in y + 1、4
優先順位が最も低いのでcomma ,
、画像p
には3
次の要素があります(2, 3, 4)
。
しかし実際にp
は、2
要素は次のとおりです。(2, (3, 4))
なんで?
なぜ最後は表現に,
属しているのに、その外側ではないのですか?let y
p = let x = 1 in x + 1、let y = 2 in y + 1、4
優先順位が最も低いのでcomma ,
、画像p
には3
次の要素があります(2, 3, 4)
。
しかし実際にp
は、2
要素は次のとおりです。(2, (3, 4))
なんで?
なぜ最後は表現に,
属しているのに、その外側ではないのですか?let y
let...in...
私は次の構文を期待します
バインディング = 式の式_
ブロックは可能な限り右に移動します。
あなたの例では、OCamlパーサーは
let y = 2 in y + 1, 4
式になり、正常に解析され(3, 4)
ます。
明示的な角かっこを使用した例に相当するものは次のとおりです。
let p = (let x = 1 in x + 1, (let y = 2 in y + 1, 4))
最終結果を返したい場合は、適切な場所にブロック(2, 3, 4)
を停止するためのブラケットを配置する必要があります。let...in...
let p = let x = 1 in x + 1, (let y = 2 in y + 1), 4
関係を示すためにインデントを付けて、複数行に書き出してみてください。
let p =
let x = 1 in x + 1,
let y = 2 in y + 1, 4
したがって、ある人が別の人にどのように「属する」かを見ることができます。
(2、(3,4))はまさに私が期待するものです。