我正在尝试破译选择部分的含义。从我可以收集的信息来看,它将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
答案 0 :(得分:1)
(int - > int)表示一个带有1个int参数并返回int的函数。你所定义的不是乘法。 'choice'是一种定义为3元组的类型。 3元组由一个int组成,一个接受int并返回一个int的函数,最后是另一个int。
答案 1 :(得分:1)
首先让我澄清一些我认为你误解的事情:
type choice = ...
声明choice
为"类型构造函数",表示它表示类型而不是值。然后右侧是"类型表达式&#34 ;;例如,您可以编写type myInt = int
来声明myInt
作为int
类型的替代名称。int * int
,在类型表达式中,并不意味着" int乘以int&#34 ;;相反,它表示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
"。