Ocaml 强制是否真的没有运行时成本?

Ocaml 强制是否真的没有运行时成本?,ocaml,Ocaml,我一直认为OCaml中的强制(:>操作符)只需要满足类型检查器的要求,而不会导致生成任何代码。这是真的吗?我假设你说的是(expr:type:>supertype) 是的,此操作在编译时在类型检查器中进行。在运行时没有任何事情发生,需要0个时间。这是因为(在OCaml中),强制只有在类型安全时才被允许。所以在运行时没有什么需要检查的。我假设您所说的是(expr:type:>supertype) 是的,此操作在编译时在类型检查器中进行。在运行时没有任何事情发生,需要0个时间。这是因为(在OCaml

我一直认为OCaml中的强制(
:>
操作符)只需要满足类型检查器的要求,而不会导致生成任何代码。这是真的吗?

我假设你说的是
(expr:type:>supertype)


是的,此操作在编译时在类型检查器中进行。在运行时没有任何事情发生,需要0个时间。这是因为(在OCaml中),强制只有在类型安全时才被允许。所以在运行时没有什么需要检查的。

我假设您所说的是
(expr:type:>supertype)


是的,此操作在编译时在类型检查器中进行。在运行时没有任何事情发生,需要0个时间。这是因为(在OCaml中),强制只有在类型安全时才被允许。所以在运行时没有什么需要检查的。

标题可以更清楚地匹配这个问题-我不确定
O(0)
是否有意义。你说的是什么样的强制?@MarkPattison,它只会转到
O(1)
aka常量时间。@埃蒂安·米隆:我在OCaml中只知道一种强制,
:>
一个@马克·帕蒂森和丹尼尔A.怀特:O(0)有效,与O(1)不同。虽然只有0会更精确。相应地编辑。标题可以更清楚地匹配这个问题-我不确定
O(0)
是否有意义。你在说什么样的强制?@MarkPattison,这将直接转到
O(1)
aka constant time。@艾蒂安·米隆:我只知道OCaml中有一种强制,那就是
:>
@马克·帕蒂森和丹尼尔·怀特:O(0)是有效的,并且不同于O(1)。虽然只有0会更精确。据此编辑。