let hd = function o :: _ -> Some o | [] -> None