【发布时间】:2019-08-26 12:04:29
【问题描述】:
在下面给定的代码中,eqtype 是什么意思?我知道在 SML 中有一个 type 关键字,它可以让您为类型设置别名,但 eqtype 对我来说是新事物。
signature SYMBOL =
sig
eqtype symbol
val symbol : string -> symbol
val name : symbol -> string
type 'a table
val empty : 'a table
val enter : 'a table * symbol * 'a -> 'a table
val look : 'a table * symbol -> 'a option
end
我试图在文档中找到解释,但找不到任何相关信息。谁能给我解释一下?谢谢。
直观地说,eqtype 让我们声明一个类型,我们需要在创建此签名的结构时指定该类型。
【问题讨论】:
-
定义了相等性的类型。
-
我是初学者@L3viathan。你能解释一下
equality is defined是什么意思吗? -
要查看相等类型和非相等类型之间的区别,请评估
1 = 1与1.0 = 1.0。 int 是相等类型。花车不是。 -
这是否也意味着我不能将我的
eqtype symbol设置为浮点数? -
请参阅this answer 了解为什么实数会这样工作。 SML 旨在提供可证明的正确代码。检查实数是否相等通常是一个错误(Is floating point math broken? 是 Stack Overflow 上重复最多的问题之一)。 SML 甚至不允许编译此类错误。
标签: sml