(我正在学习 OCaml,这可能是一个天真的问题。)
我使用下面的代码来定义一个命名函数
a
:
utop # let a = fun x -> x+1;;
val a : int -> int = <fun>
请注意,前导
val a
清楚地显示为函数名称。
然后我尝试查看函数的类型信息
a
:
utop # a;;
- : int -> int = <fun>
有一个前导
-
,意思是匿名。
但我已经给它起了名字
a
。
为什么不显示?
REPL 读取该行
a;;
作为匿名顶级表达式,返回类型为
int->int
的值。
这与您看到的行为相同
Array.iteri (fun n x -> a.(n) <- x + 1) a
- : unit = ()
表达式的返回类型有点不寻常。
如果您想获得某个值的信息,可以使用
#show
顶级指令:
#show a;;
val a: int -> int