[英]What does "let name(param1, param2) = .." mean in ocaml (as opposed to just let name = ...)?
我正在查看為 C 的極其精簡版本編寫的編譯器。 我是 ocaml 的新手,對這種結構特別困惑
let check (globals, functions) =
(* A bunch of stuff abstracted out *)
let check_function ...
.... (*A b bunch of stuff abstracted out*)
in (globals, List.map check_function functions)
其中 globals 是 (var_type, var_name) 的列表,functions 是 function 記錄。 我沒有發布整個文件(它很長),我的問題只是關於最外面的 let 語句。
我一直只看到簡單的 let 語句,你可能有類似的東西
let name = expr1 in expr2
那么當你有時是什么意思
let name(param1, param2) = expr1 in (param1, expr1 param2)
有點像我這里的?
let name(param1, param2) = expr1 in (param1, expr1 param2)
可能會更清楚地寫成:
let name (param1, param2) =
expr1
in
(param1, expr1 param2)
額外的空間使name
更明顯的是 function ,它接受一個參數。 該參數是兩個值param1
和param2
的元組。 它僅對不使用此name
function 的表達式(param1, expr1 param2)
進行本地綁定。
表達式expr1
中沒有使用param1
和param2
名稱(它們也可能是(_, _)
) ,並且當我們到達表達式(param1, expr1 param2)
時,它們不在 scope 中,所以如果這是有效代碼,它們指的是到您向我們展示的代碼之前的綁定。
實際上, name
根本沒有任何作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.