2017-07-21 2 views
0

Haskell's ghci kann schön jeden Wert drucken, der zu einem Typ gehört, der Show typeclass implementiert. Gibt es eine Entsprechung in OCaml, die utop Werte von benutzerdefinierten Typen automatisch schön drucken lässt? Typing x |> M.to_string ist jede Zeile ziemlich langweilig ...Werte in utop schön drucken

Antwort

2

In Ihrem Modul für Ihre Art M.t definieren die Funktion:

val pp : Format.formatter -> t -> unit 

Anschließend können Sie einen Drucker für den Typ in ocaml oder utop mit installieren:

# #install_printer M.pp 

Siehe Abschnitt toplevel directive des Handbuchs.

+0

Das scheint für mich zu funktionieren, aber wie kann ich diesen 'Format.formatter' Wert in dieser Funktion verwenden. Als ich naiv schrieb: 'let pp _ r = to_string r |> print_string', wurde ich vor Typensignatur statt nach' = 'ausgegeben. Die Format Modul Dokumentation hilft mir nicht viel ... – Sventimir

+0

Okay, ich habe es selbst gefunden: es gibt 'val pp_print_text: Formatierer -> string -> Einheit' Funktion im 'Format' Modul, das genau das tut, was erwartet wird. Danke vielmals! – Sventimir

+0

Nur ein Kommentar zu Ihrem ersten Versuch. Sie können nicht tun, dass Sie in das Format Systemabstraktion eingehakt werden müssen, können Sie nicht einfach Ausgabe selbst in hübschen Druckfunktionen drucken. –