2016-05-02 13 views
0

(int -> int) -> int = <fun>については、対応する発現は、fun x -> (x 1) + 1であり得る。
int -> (int -> int) = <fun>タイプの式は使用できますか?そうでない場合はなぜですか?"int - >(int - > int)= <fun>"型の式を使用できますか?

+0

厳密INT'、話す(INT - > INT)'の部分です。 '= '部分は、トップレベルが関数の "値"をどのように出力するかだけです。たとえば、 '1 + 1 ;;'を評価した後、utopは ' - :int = 2'を出力します。ここで' int'は式の型で、 '='の後の部分はその値です。 –

答えて

0

はそれがint -> (int -> int)型の式を持つことは可能ですか?

括弧が暗示されているが->は、右結合、タイプ= int -> int -> intint -> (int -> int)あるので。だからあなたが探している関数は、2つの引数をとる単純なカルト関数です。 >>(INT - - - > INT)= '型ではない、唯一 `INT

let f x y = x + y 
0

はい、もちろんです。関数を値として返すだけです。たとえば:

let f j = fun i -> j + i;; 
val f : int -> int -> int = <fun> 

f 1;; 
- : int -> int = <fun> 

(f 1) 2;; 
- : int = 3 
+0

しかし、関連する質問ではありませんが、utopとtoplevelは 'fun x - >(x 1)+ 1'の評価の後にこのようにカッコを入れることになっていませんか? – alr

+0

@AlexanderRevyakinトップレベルは、タイプの矢印( ' - >')が右に関連するルールを使用し、不要なカッコを節約します。 –

関連する問題