令P =令x = 1 X + 1,令y =沿y + 1 2,4爲什麼這個元組有2個元素?
由於comma ,
具有最低的優先級,我會圖像p
具有3
元素:(2, 3, 4)
。
但事實上,p
只有2
元素:(2, (3, 4))
爲什麼?
爲什麼最後,
屬於let y
表達式,但不是在它之外?
令P =令x = 1 X + 1,令y =沿y + 1 2,4爲什麼這個元組有2個元素?
由於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))正是我所期望的。
謝謝,但我不認爲你已經解釋了根。我的意思是內在的深層原因 –
讓y + 1,4中的y = 2屬於'let x'表達式嗎? –
是的,儘管我可能會略有不同。但這是深層次的原因,我用縮進來寫出來的原因是爲了讓結構揭示這個原因。我在答案中增加了一些,希望能使它更有用。 – RonaldBarzell