Die Erweiterung der Sexplib-Syntax ermöglicht die einfache Serialisierung und Deserialisierung beliebiger benutzerdefinierter Datenstrukturen in OCaml. Es wird in der Regel durch Zugabe einer with sexp
Anmerkung zum Ende einer Typdefinition getan:Wie kann sexplib mit Funktortypen wie Map verwendet werden?
type a = A of int | B of float with sexp
Dies scheint nicht direkt an Funktors-basierten Typen zu verallgemeinern, noch ist es klar, wie der Sexplib Standard-Typ-Wandler erfassen kann sogar die Standard-Funktoren.
Bisher habe ich daran gearbeitet, indem ich eine bestimmte Map type Instanz (zB int Map.Make(String).t
) in eine Liste vor der Serialisierung abgeflacht habe und umgekehrt, aber dies wurde von den allgemein ambitionierten Autoren von Sexplib/Jane nicht völlig übersehen Straßenkern. Ich merke auch, dass ältere Versionen von Batterien in benutzerdefinierten sexp Serialisierung zu ihren wichtigsten Modulen wie [Bat] Map mischen, aber das wurde für einige Zeit entfernt.
Wie werden Maps oder andere komplexe Funktortypen häufig mit der Sexplib-Serialisierung verwendet?
Ich denke, dass Sie eine erweiterte Standardbibliothek mit pervasive Sexplib-Konvertierungsfunktionen dafür verwenden würden. Hast du auf Core geschaut? Ich habe nur 5 Minuten damit verbracht, aber in diesen 5 Minuten habe ich den Funktor 'Set.Make' angewendet und mich nach Sexplib-Konvertierungsfunktionen für den Argumenttyp gefragt, damit er Sexplib-Konvertierungsfunktionen für den resultierenden Settyp erstellen kann. –