我正在开发一个ocaml项目,我正在学习语法.我看到了一个程序,格式如下:
let foo1 = function
|(x, y) -> foo2 (x,y) z
and foo2 a s=
(*stuff in here*)
Run Code Online (Sandbox Code Playgroud)
我很关心and
那里的情况.我试着在网上寻找可能意味着什么,但我似乎无法找到任何东西.它也可能只是一个错字...任何建议将不胜感激.谢谢!
and
用于定义相互递归的函数/数据类型.
如果没有and
,你不能同时打电话foo2
从foo1
和foo1
从foo2
,你只能有其中之一.
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
这个不行)
归档时间: |
|
查看次数: |
98 次 |
最近记录: |