let unique l = List.rev (List.fold_left (fun results x -> if List.mem x results then results else x::results) [] l )