Standard ML of New Jersey (32-bit) v110.99 [built: Thu Dec 24 11:01:10 2020] - - fun f2 h n = real n; val f2 = fn : 'a -> int -> real - - fun f2 h n = real (h n); val f2 = fn : ('a -> int) -> 'a -> real - - fun f2 h n = real (h (1+n)); val f2 = fn : (int -> int) -> int -> real - - - - fun f3 h x = real (h (round x)); val f3 = fn : (int -> int) -> real -> real - - - fun f4 h = h []; val f4 = fn : ('a list -> 'b) -> 'b - - - []; val it = [] : 'a list - - [] : int list; val it = [] : int list - - []; val it = [] : 'a list - - [] : real list; val it = [] : real list - - - fun f4 h = h []; val f4 = fn : ('a list -> 'b) -> 'b - - - - fun f x = x+1; val f = fn : int -> int - f 5; val it = 6 : int - f(5); val it = 6 : int - f(((((5))))); val it = 6 : int - f (((((5))))); val it = 6 : int - f 5; val it = 6 : int - - - - - fun f5 h x = h x; val f5 = fn : ('a -> 'b) -> 'a -> 'b - - - fun f5' x h = h x; val f5' = fn : 'a -> ('a -> 'b) -> 'b - - - fun f6 (h, x) = h x; val f6 = fn : ('a -> 'b) * 'a -> 'b - - - fun f6' (x, h) = h x; val f6' = fn : 'a * ('a -> 'b) -> 'b - - - fun f6'' (h, x::_) = h x; stdIn:55.5-55.25 Warning: match nonexhaustive (h,x :: _) => ... val f6'' = fn : ('a -> 'b) * 'a list -> 'b - - - fun f6'' (h, x::_) = h x = | f6'' (_, []) = raise Empty; val f6'' = fn : ('a -> 'b) * 'a list -> 'b - - - - fun f7 h g x = g (h x); val f7 = fn : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c -