Function &引用;及;ocaml中的函数
我正在做一个ocaml项目,我正在学习语法。我看到一个具有以下格式的程序:Function &引用;及;ocaml中的函数,function,ocaml,Function,Ocaml,我正在做一个ocaml项目,我正在学习语法。我看到一个具有以下格式的程序: let foo1 = function |(x, y) -> foo2 (x,y) z and foo2 a s= (*stuff in here*) 我关心的是和在那里做什么。我试着在网上寻找这可能意味着什么,但似乎什么也找不到。它也可能只是一个打字错误…任何建议都将不胜感激。谢谢 和用于定义相互递归的函数/数据类型 如果没有和,您不能从foo1调用foo2,也不能从foo2调用foo1,您
let foo1 = function
|(x, y) -> foo2 (x,y) z
and foo2 a s=
(*stuff in here*)
我关心的是
和在那里做什么。我试着在网上寻找这可能意味着什么,但似乎什么也找不到。它也可能只是一个打字错误…任何建议都将不胜感激。谢谢 和
用于定义相互递归的函数/数据类型
如果没有和,您不能从foo1
调用foo2
,也不能从foo2
调用foo1
,您只能使用其中一个
您还需要在示例中使用rec
,才能使其正常工作。没有rec
,和
就像正常的let
以下是两个相互递归的函数定义:
let rec some_fun1 _ =
print_endline "fun1";
some_fun2 ()
and some_fun2 _ =
print_endline "fun2";
some_fun1 ()
(正如我上面所说,如果没有
rec
,这是行不通的)和
用于定义相互递归的函数/数据类型
如果没有和,您不能从foo1
调用foo2
,也不能从foo2
调用foo1
,您只能使用其中一个
您还需要在示例中使用rec
,才能使其正常工作。没有rec
,和
就像正常的let
以下是两个相互递归的函数定义:
let rec some_fun1 _ =
print_endline "fun1";
some_fun2 ()
and some_fun2 _ =
print_endline "fun2";
some_fun1 ()
(正如我上面所说,没有rec
这是行不通的)没有rec
,它就像一个let
,但有一个约束,即第二个定义也不能引用第一个。“没有rec,就像正常的let”不一定。let
中的表达式在let
之外的范围内求值。因此,如果嵌套了let
s,则第二个let
表达式将在第一个let
的范围内求值;然而,如果使用和
,它们都将在外部范围内进行计算。例如,let x=2 in let y=3 in let x=y和y=x in y
的计算结果为2,但let x=2 in let y=3 in let x=y in let y=x in y
的计算结果为3而无rec
,这类似于let
,但有一个约束,即第二个定义也不能引用第一个定义。“没有rec,就像正常的let一样“不一定。let
中的表达式在let
之外的范围内求值。因此,如果嵌套了let
s,则第二个let
表达式将在第一个let
的范围内求值;然而,如果使用和
,它们都将在外部范围内进行计算。例如,let x=2 in let y=3 in let x=y和y=x in y
计算结果为2,但let x=2 in let y=3 in let x=y in let y=x in y
计算结果为3