「Gensym」修訂間的差異
跳至導覽
跳至搜尋
Tankianting(討論 | 貢獻) (建立內容為「{{Nav|}} Gensym 意思是 Generate Symbol,是用來產出編譯器的不和其他變數強碰的獨一無二的變數。 以下採用 OCaml 撰寫。 <pre> le…」的新頁面) |
Tankianting(討論 | 貢獻) |
||
(未顯示同一使用者於中間所作的 1 次修訂) | |||
行 1: | 行 1: | ||
{{Nav|}} | {{Nav|程式語言、邏輯學}} | ||
Gensym 意思是 Generate | Gensym 意思是 Generate Symbol,是用來產出編譯器的不和其他變數強碰的獨一無二的變數名稱(symbol)。 | ||
以下採用 OCaml 撰寫。 | 以下採用 OCaml 撰寫。 |
於 2023年7月13日 (四) 18:53 的最新修訂
Gensym 意思是 Generate Symbol,是用來產出編譯器的不和其他變數強碰的獨一無二的變數名稱(symbol)。
以下採用 OCaml 撰寫。
let makeGenSym () = let i = ref 0 in (* fun (args...) -> body 係指 lambda 函數*) (fun (sym_name) -> let res = sym_name ^ (string_of_int !i) in let _ = (i := !i + 1) in res) (* 使用案例 *) let genSym = (makeGenSym ());; let a = genSym "str";; let b = genSym "str";;
型別與值如下:
val makeGenSym : unit -> string -> string = <fun> val genSym : string -> string = <fun> val a : string = "str0" val b : string = "str1"