标准ML中的eqtype是什么?

时间:2019-04-04 16:28:28

标签: sml

在下面的给定代码中,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让我们声明了一个类型,在创建此签名的结构时需要指定该类型。

1 个答案:

答案 0 :(得分:0)

eqtype 是相等类型的关键字。 sml 中的相等类型定义为可以与 = 进行比较的值类型。例如,int、string list、bool * bool 选项都是相等类型,而 real、int -> int 则不是。

在签名中,当您有 eqtype 时,您将添加一个额外的约束层,告诉 sml 类型是相等类型。任何归因于 this sig 的结构都需要将类型定义为相等类型。