(* uncurried ... *) fun fu (x,y) = x+y; val fu' = fn (x,y) => x+y; val fu'' = op +; (* curried ... *) fun fc x y = x+y; val fc' = fn x => fn y => x+y; (* and some cross-overs ... *) use "curry.sml"; val fu''' = uncurry fc; val fc'' = curry fu; (* test all ... *) fu(1,2) + fu'(3,4) + fu''(5,6) + fu'''(7,8) + fc 9 10 + fc' 11 12 + fc'' 13 14; (* some ways of defining curried (c) and uncurried (u) functions *) (* LA, CSSE, Monash U., 7/2005 *)