如何理解 Ocaml 定义中的“let () =”

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

在 ocaml 中,如何理解如下定义:

let () = print_endline "hello world"

ocaml 中的 Let 定义应该看起来像 let x = e 但上面的“()”不是变量。那么那里发生了什么?

我认为这样写会更有意义:

let _:unit = print_endline "hello world"
ocaml
1个回答
0
投票

let 绑定的语法是“pattern = expression`。大多数情况下,模式将是变量名、通配符或它们的元组模式,但每种类型的适当类型的模式都是有效的。

语义是表达式将与模式匹配,如果匹配成功,则模式绑定的变量(如果有)将在

let
的范围内绑定。如果失败,就会出现异常。

因此对于

let () = something
,您有一个不绑定变量且永远不会失败的模式(因为类型
unit
的表达式永远不会产生
()
以外的值)。所以这在功能上确实是等价的
let _:unit = ...
,只是更紧凑了一点。

© www.soinside.com 2019 - 2024. All rights reserved.