是“让x = 3;;”一个表情?

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

人们说 ocaml 中的一切都是一个表达式并且有一个类型。但是我怎么能理解像

这样的陈述
let x = 3;

let y = x * x;

这些看起来不像表情,对吧?

ocaml
2个回答
2
投票

它们不是表达式,不,但它们也不是语句。它们是定义。还有其他类型的定义,例如类型和模块定义。

“一切皆表达式”的意思是一切即代码都是表达式。也就是说,导致执行某些指令的所有内容。当来自类似 C 的命令式语言时,另一种可能更清楚的措辞方式就是“没有语句”。

虽然它可能看起来像有语句,因为分号

;
的使用方式类似。但暗示没有任何语句,
;
不是类 C 语言中的语句终止符,而是序列运算符。
a; b
是由子表达式
a
b
组成的表达式,其中
a
的计算结果为
unit
并且暗示是纯副作用。


0
投票

OCaml 表达式在这里https://v2.ocaml.org/manual/expr.html,你输入的不是表达式而是 let-bindings.

注意,单个

;
用于分隔表达式,通常与命令式表达式一起使用。

不要与

;;

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