5

在 OCaml中使用跟踪函数时#trace,输出可能包括以下内容:

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

星星/splats 是什么意思?

4

1 回答 1

5

这用于将部分应用程序的结果标记为 currified 函数。let f x y = ...相当于let f x = fun y -> ...:应用x参数返回一个新函数,该函数又接受一个y参数进行计算。第一个函数将被跟踪为f,第二个函数(例如,返回f 1)标记为f*

# 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
于 2013-02-06T18:26:46.207 回答