0

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

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

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

4

1 回答 1

6

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

没有and,你不能同时调用foo2fromfoo1foo1from foo2,你只能拥有其中之一。

您还需要rec在您的示例中使其正常工作。没有recand就跟平常一样let

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

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

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

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

于 2013-01-31T11:14:09.507 回答