Sml (int->;int)是什么意思?

Sml (int->;int)是什么意思?,sml,Sml,我想解释一下这篇文章的类型选择部分的含义。据我所知,它将一个int,乘以(int->int),再乘以另一个int。我只是对(int->int)的意思感到困惑。任何帮助都将不胜感激 val callcc = SMLofNJ.Cont.callcc val throw = SMLofNJ.Cont.throw type 'a cont = 'a SMLofNJ.Cont.cont type choice = int cont * (int -> int) * int (int->int)

我想解释一下这篇文章的类型选择部分的含义。据我所知,它将一个
int
,乘以
(int->int)
,再乘以另一个
int
。我只是对
(int->int)
的意思感到困惑。任何帮助都将不胜感激

val callcc = SMLofNJ.Cont.callcc
val throw  = SMLofNJ.Cont.throw
type 'a cont = 'a SMLofNJ.Cont.cont

type choice = int cont * (int -> int) * int

(int->int)表示接受1个int参数并返回一个int的函数。您定义的不是乘法“choice”是定义为3元组的类型。三元组由一个int组成,一个接受int并返回int的函数,最后是另一个int。

让我首先澄清一些我认为您误解的事情:

  • type choice=…
    choice
    声明为“类型构造函数”,这意味着它表示类型而不是值。右侧则是“类型表达式”;例如,您可以编写
    type myInt=int
    来声明
    myInt
    作为
    int
    类型的替代名称
  • int*int
    在类型表达式中,并不表示“一个int乘以一个int”;相反,它表示类型“成对
    int
    -s”。例如,值表达式
    (1,2)
    的类型为
    int*int
那太离谱了
int->int
表示类型“接受
int
并返回
int
的函数”。例如,值表达式
fni=>2*i
,它是一个接受整数并返回该整数的两倍的函数,其类型为
int->int

把这些放在一起

type choice = int cont * (int -> int) * int
声明
choice
表示“一个三元组(3元组),其第一个元素是
int cont
;其第二个元素是一个函数,它接受
int
,并返回
int
;其第三个元素是
int