0

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

4

2 に答える 2

3

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
于 2013-01-16T16:42:00.250 に答える
0

関係を示すためにインデントを付けて、複数行に書き出してみてください。

let p = 
    let x = 1 in x + 1, 
        let y = 2 in y + 1, 4

したがって、ある人が別の人にどのように「属する」かを見ることができます。

(2、(3,4))はまさに私が期待するものです。

于 2013-01-16T16:26:24.730 に答える