2017-02-26 13 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)は、int引数を1つとりintを返す関数です。あなたが定義しているのは倍数ではありません。 'choice'は3タプルとして定義される型です。 3タプルは、int、intをとり、intを返し、最後に別のintを返す関数で構成されています。

1

私はあなたが誤解したと思ういくつかのことを明確にしてみましょう:

  • type choice = ...は、それがタイプではなく値を示していることを意味し、「型コンストラクタ」としてchoiceを宣言している 。右辺は「型表現」である。たとえば、type myInt = intと書いてmyIntintタイプの代替名として宣言することができます。
  • int * intは、型表現では、 "int times an int"を意味するものではありません。むしろ、それは "pair of int -s"のタイプを示す。たとえば、値式(1, 2)は、タイプがint * intです。

それは邪魔です。 。 。 int -> intは、タイプ「intを取り、intを返す関数」を示します。たとえば、値式fn i => 2 * iは、整数をとり、その整数倍を返す関数で、タイプはint -> intです。

一緒にこれを置く、

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

は、その最初の要素「トリプル(3組)を意味するchoiceを宣言でint cont、その第二の要素intをとり、intを返す関数であり;そしてその第3の要素はint "である。

関連する問題