gpt4 book ai didi

sml - 什么时候在 SML 中使用分号?

转载 作者:行者123 更新时间:2023-12-03 22:31:28 27 4
gpt4 key购买 nike

我知道分号在 REPL 中用作终止符。但我对何时在源文件中使用它们感到困惑。

例如 val x = 1 之后就没有必要了.但是如果我在 use "foo.sml" 之后省略它,编译器会提示它。

那么,分号的使用规则是什么?

最佳答案

分号用于 SML 中的许多句法实体。它们通常用于创建例如表达式或声明的序列。这是 SML 语法的链接:

http://www.mpi-sws.org/~rossberg/sml.html

在您的情况下,您对声明的分号( dec 类)感兴趣。请注意,创建 decs 序列的分号是可选的。在编写 SML 模块时,您实际上并不需要它,而且很少见到它们。例如

structure S = struct
val x = 5
fun f x = x
val z = x + x
end

不是
structure S = struct
val x = 5;
fun f x = x;
val z = x + x
end

在源文件中,您通常使用分号的唯一地方是分隔具有副作用的表达式。例如,
val x = ref 5
val _ = (x := !x + 1; x := !x+ 2)

但这种用法很少见。

smlnj repl 仅在看到分号时才评估声明,因此您应该在想要查看或使用该值时使用分号。我认为 use "foo.sml"; case 令人困惑,因为它不是声明;这是一种表达方式。我想 repl 转换像 use "foo.sml" 这样的表达式进入 val _ = use "foo.sml" .因此,它需要分号来告诉 repl 真正运行它,如上所述。附带说明一下, use 并没有什么特别之处。 .它只是 string -> unit 类型的函数.

关于sml - 什么时候在 SML 中使用分号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19237803/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com