2013-02-06 34 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