2013-01-16 47 views
0

令P =令x = 1 X + 1,令y =沿y + 1 2,4爲什麼這個元組有2個元素?

由於comma ,具有最低的優先級,我會圖像p具有3元素:(2, 3, 4)

但事實上,p只有2元素:(2, (3, 4))

爲什麼?

爲什麼最後,屬於let y表達式,但不是在它之外?

回答

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 
0

嘗試多條線路上寫出,與縮進來顯示關係:

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

所以,你可以看到一個讓如何「屬於」另一個。

(2,(3,4))正是我所期望的。

+2

謝謝,但我不認爲你已經解釋了根。我的意思是內在的深層原因 –

+0

讓y + 1,4中的y = 2屬於'let x'表達式嗎? –

+0

是的,儘管我可能會略有不同。但這是深層次的原因,我用縮進來寫出來的原因是爲了讓結構揭示這個原因。我在答案中增加了一些,希望能使它更有用。 – RonaldBarzell

相關問題