let car (l : 'a list) : 'a = match l with (x::_) -> x
                                            |-> failwith "empty list"