「Gensym」修訂間的差異

出自Tan Kian-ting的維基
跳至導覽 跳至搜尋
 
行 1: 行 1:
{{Nav|程式語言、邏輯學}}
{{Nav|程式語言、邏輯學}}


Gensym 意思是 Generate Symbol,是用來產出編譯器的不和其他變數強碰的獨一無二的變數。
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"