ocam中的“和”函数

时间:2013-01-31 11:09:04

标签: function ocaml

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

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

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

1 个答案:

答案 0 :(得分:6)

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

如果没有and,则无法从foo2拨打foo1,从foo1拨打foo2,您只能使用其中一个。

您的示例中还需要rec才能使其正常运行。如果没有recand就像普通let一样。

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

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

and some_fun2 _ =
    print_endline "fun2";
    some_fun1 ()

(就像我上面所说,没有rec这不起作用)