Ich nehme an, die Idee ist, ein Tabellenzuordnungszeichenfolgen für Ganzzahlen zu erstellen. Dann möchten Sie seinen Typ als schreiben als (string, int) hash_table
(der Typ hash_table
ist ein Typ mit zwei Parametern, die wie in ML geschrieben sind).
Sie brauchen aber auch eine Hash -Funktion hash : string -> word
und eine Gleichstellungsfunktion eq : string * string -> bool
über Saiten zur Verfügung mkTable
. Für letztere können Sie einfach verwenden op=
, Für die ersteren können Sie verwenden HashString.hashString
Aus dem jeweiligen Modul.
So,
val ht : (string, int) HashTable.hash_table = HashTable.mkTable(HashString.hashString, op=)(17, Domain)
sollte arbeiten.
Ich sollte jedoch beachten, dass Hash -Tabellen tendenziell stark überbeanspruchte und meistens die falsche Datenstruktur sind. Dies gilt insbesondere für die funktionale Programmierung, da sie eine staatliche Datenstruktur sind. Normalerweise sind Sie besser dran (und möglicherweise sogar noch effizienter) mit einer baumbasierten Karte, z. B. der RedBlackMapFn
Aus der SML/NJ -Bibliothek.