为什么这个元组有2个元素?

时间:2013-01-16 16:23:16

标签: functional-programming ocaml

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

由于comma ,具有最低优先级,因此我会将p图片3元素设为(2, 3, 4)

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

为什么吗

为什么上一个,属于let y表达式,但不属于它?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

尝试在多行上书写,并使用缩进来显示关系:

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

所以你可以看到一个人如何“属于”另一个人。

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