我知道如何in在OCaml中使用关键字.我的问题是编译器执行表达式的顺序.
例如,让我们采用以下代码:
let v = expr1 in expr2
Run Code Online (Sandbox Code Playgroud)
编译器首先查看expr2,然后当它v出现expr2时替换v为expr1?或者首先,它评估expr1然后应用expr2?
你可能想知道我为什么要问这个奇怪的问题.这是因为我不明白以下代码的工作原理:
let rec some_function = function
| [] -> ()
| t::q when (*here put a condition*) -> some_function q
| t::q -> (*some operations here*); some_function q
in
let s = (*some list*)
some_function s
Run Code Online (Sandbox Code Playgroud)
这段代码是如何工作的?我的意思是当我们有递归调用some_function q然后程序直接进入in块并应用其他递归调用some_function s?
ocaml ×1