2017-02-26 371 views
2

我试图破译的这种类型选择部分的含义。从我能收集到的数据来看,它乘以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 

回答

1

(int - > int)表示一个函数,它接受1个int参数并返回一个int。你所定义的不是一个乘法。 'choice'是一种被定义为3元组的类型。三元组包含一个int,一个接受int并返回一个int的函数,最后是另一个int。

1

让我澄清一些事情,我想你误会开始:

  • type choice = ...正在申报choice作为一个“类型构造”,这意味着它表示而不是 。然后右边是一个“类型表达”;例如,您可以编写type myInt = int来声明myInt作为int类型的替代名称。
  • int * int,在一个类型表达式中,并不意味着“一个int时间int”;相反,它表示类型“int -s”。例如,值表达式(1, 2)的类型为int * int

那就没问题了。 。 。 int -> int表示类型“功能需要int并返回int”。例如,值表达式fn i => 2 * i是一个函数,它接受一个整数并返回该整数的两倍,其类型为int -> int

把此一起,

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

声明choice为意指“一个三元组(3元组),其第一个元素是一个int cont;其第二元件是一个函数,它接受一个int并返回一个int;以及其第三个元素是int“。