# Matematicamente ho che: # map f l = reduce (fˇcons) nil l # dove cons e' la funzione binaria che attacca in testa un elemento # ad una lista. in ML, non vi e' l'operatore infisso di composizione, # ma possiamo comunque scrivere qlcs di molto simile. - fun compose f g x = (f (g x)); > val ('a, 'b, 'c) compose = fn : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b - fun cons h t = h::t; > val 'a cons = fn : 'a -> 'a list -> 'a list - fun myMap f l = reduce (compose cons f) nil l; > val ('a, 'b) myMap = fn : ('a -> 'b) -> 'a list -> 'b list - myMap (fn x=>[x]) [1,2,3]; > val it = [[1], [2], [3]] : int list list