let main () : unit Deferred.t =
  let card = {
    suit = Spades;
    rank = Ace;
  } in

  (* card -> string *)
  let s = string_of_card card in
  print_endline s;

  (* card -> string -> card *)
  (match card_of_string s with
  | Some card' -> print_endline (string_of_card card')
  | None -> failwith "impossible");

  return ()