2017-02-26 369 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「。