let rec last2 = function | nl :: l :: [] -> Some ( nl , l ) | h :: t -> last2 t | [] -> None last2 [ "a" ; "b" ; "c" ; "d" ] last2 [ "a" ] last2 ([ ] : int list)