为什么命名函数在utop中仍然显示为匿名?

问题描述 投票:0回答:1

(我正在学习 OCaml,这可能是一个天真的问题。)

我使用下面的代码来定义一个命名函数

a
:

utop # let a = fun x -> x+1;;
val a : int -> int = <fun>

请注意,前导

val a
清楚地显示为函数名称。

然后我尝试查看函数的类型信息

a
:

utop # a;;
- : int -> int = <fun>

有一个前导

-
,意思是匿名。

但我已经给它起了名字

a

为什么不显示?

ocaml utop
1个回答
0
投票

REPL 读取该行

a;;

作为匿名顶级表达式,返回类型为

int->int
的值。 这与您看到的行为相同

Array.iteri (fun n x -> a.(n) <- x + 1) a
- : unit = ()

表达式的返回类型有点不寻常。

如果您想获得某个值的信息,可以使用

#show
顶级指令:

#show a;;
val a: int -> int
© www.soinside.com 2019 - 2024. All rights reserved.