Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在做一个 ocaml 项目,我正在学习语法。我看到了一个格式如下的程序:
let foo1 = function |(x, y) -> foo2 (x,y) z and foo2 a s= (*stuff in here*)
我很关心那里在and做什么。我试着在网上寻找这可能意味着什么,但我似乎找不到任何东西。它也可能只是一个错字......任何建议将不胜感激。谢谢!
and
and用于定义相互递归的函数/数据类型。
没有and,你不能同时调用foo2fromfoo1和foo1from foo2,你只能拥有其中之一。
foo2
foo1
您还需要rec在您的示例中使其正常工作。没有rec,and就跟平常一样let。
rec
let
这是两个相互递归的函数定义:
let rec some_fun1 _ = print_endline "fun1"; some_fun2 () and some_fun2 _ = print_endline "fun2"; some_fun1 ()
(就像我上面说的,没有rec这个是行不通的)