Examples
fun map(f,nil) = nil | map(f,x::xs) = f x :: map(f,xs);
val map = fn : (‘a -> ‘b) * ‘a list -> ‘b list
val square = fn : int -> int
[9,16,25] : int list (* ‘a is int and ‘b is int *)
val length = fn : ‘a list -> int
map length [[3,4],[5,6,7],[]];
[2,3,0] : int list (* for length: ‘a is int for map: ‘a is int list, ‘b is int *)