fun reduce(f,nil,v0) = v0 |reduce(f,a :: x, v0) = f(a,reduce(f,x,v0)); fun sum(nil) = 0 |sum(a :: x) = reduce(op +,a,0) + sum(x); reduce(op+,map (fn x => reduce(op +,x,0)) [[1,2,3],[4,5],[6,7,8,9]],0); fun printlist(nil) = print("\n") |printlist(E :: nil) = (print(E : int);print("\n")) |printlist(E1 :: E2 :: S) = (print(E1);print(" , ");printlist(E2::S));