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

  (* card -> string *)
  let s = Marshal.to_string card [] in
  print_endline s;

  (* card -> string -> card *)
  let card' = Marshal.from_string s 0 in
  print_endline (Sexp.to_string (sexp_of_card card'));

  return ()