Syntax OCaml语法混乱

Syntax OCaml语法混乱,syntax,functional-programming,ocaml,Syntax,Functional Programming,Ocaml,当我第一次开始使用in语句时,我认为它非常简单而且有意义。然而,这些代码示例让我质疑我对它们的理解程度 let fun1 x = let fun2 y = y + 1 in fun2(x);; val fun1 : int -> int = <fun> 这件事让我更加困惑,提出了更多的问题。我真的不知道如何解释这个。是sum1被宣布用于sum2吗?如果是这样,为什么中的像第一个示例中那样应用于外部函数而不是内部函数 如果您能帮助解释这些代码片段,我们将不胜感激 在语句中没有

当我第一次开始使用in语句时,我认为它非常简单而且有意义。然而,这些代码示例让我质疑我对它们的理解程度

let fun1 x = let fun2 y = y + 1 in fun2(x);;
val fun1 : int -> int = <fun> 
这件事让我更加困惑,提出了更多的问题。我真的不知道如何解释这个。是sum1被宣布用于sum2吗?如果是这样,为什么中的
像第一个示例中那样应用于外部函数而不是内部函数


如果您能帮助解释这些代码片段,我们将不胜感激

语句中没有
。有
let
形式的定义
let[rec]pattern=expression{and pattern=expression}
let
形式的表达式
let[rec]pattern=expression{and pattern=expression}在expression
中(其中
[]
表示“可选”而
{}
表示“零或更多”)。因此,
中的
只是
let
表达式语法的一部分

是sum1被宣布用于sum2吗

否。
sum2
定义为在
sum1
中使用,就像在第一个示例中一样
sum1i
只返回
sum2
作为其结果。另一种不给返回的函数命名的写入方法是:

let sum1 i = fun j -> i + j
甚至:

let sum1 i j = i + j
let sum1 i j = i + j