let sign = function n when (n > 0) -> 1 | n when (n < 0) -> -1 | n -> 0 let rec sum_n = function 0 -> 0 | n -> n + sum_n (n-1) let sum_n_2 n = let rec list_n = function 0 -> [] | n -> n :: (list_n (n-1)) in List.fold_left (+) 0 (list_n n)