val square = fn x => x*x; fun valueAtTwo f = f 2; fun sumOfValues f [] = 0 | sumOfValues f (h::t) = (f h) + (sumOfValues f t); fun add a b = a+b; fun add a = fn b => a+b; val sumOfSquares = sumOfValues square; val sumOfCubes = sumOfValues (fn x => x*x*x); fun sumOfValues f list = foldr (fn (element,running)=>element+running) 0 (map f list); fun sumOfValues f list = foldr (fn (element,running)=>(f element)+running) 0 list; fun digitsToInt digits = foldl (fn (element,running) => running*10 + element) 0 digits; fun someOtherFunction digits = foldr (fn (element,running) => running*10 + element) 0 digits; val digitsToInt = foldl (fn (element,running) => running*10 + element) 0; fun f x = square x; val f = square;