ocam中的"和"函数

pau*_*ago 0 ocaml function

我正在开发一个ocaml项目,我正在学习语法.我看到了一个程序,格式如下:

 let foo1 = function
    |(x, y) -> foo2 (x,y) z
 and foo2 a s=
    (*stuff in here*)
Run Code Online (Sandbox Code Playgroud)

我很关心and那里的情况.我试着在网上寻找可能意味着什么,但我似乎无法找到任何东西.它也可能只是一个错字...任何建议将不胜感激.谢谢!

sin*_*nan 6

and 用于定义相互递归的函数/数据类型.

如果没有and,你不能同时打电话foo2foo1foo1foo2,你只能有其中之一.

rec在您的示例中,您还需要使其工作.没有rec,and就像平常一样let.

这是两个相互递归的函数定义:

let rec some_fun1 _ =
    print_endline "fun1";
    some_fun2 ()

and some_fun2 _ =
    print_endline "fun2";
    some_fun1 ()
Run Code Online (Sandbox Code Playgroud)

(就像我上面所说,没有rec这个不行)