2013-02-06 31 views
2

當函數使用OCaml中#trace跟蹤,輸出可能包括這樣的事情:OCaml Trace:什麼是明星?

subRec --> <fun> 
subRec* <-- "_1" 
subRec* --> <fun> 
subRec** <-- Var "_1" 

什麼星星/提示圖標的含義?

回答

2

這用於將部分應用程序的結果標記爲已驗證的 函數。 let f x y = ...等於let f x = fun y -> ...: 應用x參數返回一個新函數,而該函數又需要 和y參數進行計算。第一個函數將被標記爲f, ,第二個函數將被標記爲f*,標記爲f 1

# let f x y = x + y;; 
# #trace f;; 
# f 1 2;; 
f <-- 1 
f --> <fun> 
f* <-- 2 
f* --> 3 
- : int = 3 
# let g = f 1;; 
f <-- 1 
f --> <fun> 
val g : int -> int = <fun> 
# g 2;; 
f* <-- 2 
f* --> 3 
- : int = 3