Wie verwende ich die Queue-Bibliothek in SML / NJ
Frage
Ich sehe, dass die SML / NJ eine Warteschlangenstruktur enthält. Ich kann nicht herausfinden, wie es zu benutzen. Wie kann ich die zusätzliche Bibliotheken, die von SML / NJ bereitgestellt verwenden?
Lösung
Die Queue
Struktur wird durch SML keine Angabe ' 97, aber es ist in SML / NJ Top-Level-Umgebung.
$ sml Standard ML of New Jersey v110.69 [built: Fri Mar 13 16:02:47 2009] - Queue.mkQueue (); [autoloading] [library $SMLNJ-LIB/Util/smlnj-lib.cm is stable] [autoloading done] stdIn:1.1-1.17 Warning: type vars not generalized because of value restriction are instantiated to dummy types (X1,X2,...) val it = - : ?.X1 Queue.queue -
Sie können eine Struktur open
. Auf diese Weise können Sie Queue.
vor allem vermeiden eingeben. Es ist entmutigt dies auf der obersten Ebene zu tun, aber, weil sie die Umwelt verschmutzt und macht es viel weniger offensichtlich, was Sie je nach. (In einer anderen Struktur Ich würde sagen, dass es in manchen Situationen akzeptabel sein könnte.)
$ sml Standard ML of New Jersey v110.69 [built: Fri Mar 13 16:02:47 2009] - open Queue; [autoloading] [library $SMLNJ-LIB/Util/smlnj-lib.cm is stable] [autoloading done] opening Queue type 'a queue exception Dequeue val mkQueue : unit -> 'a queue val clear : 'a queue -> unit val isEmpty : 'a queue -> bool val enqueue : 'a queue * 'a -> unit val dequeue : 'a queue -> 'a val next : 'a queue -> 'a option val delete : 'a queue * ('a -> bool) -> unit val head : 'a queue -> 'a val peek : 'a queue -> 'a option val length : 'a queue -> int val contents : 'a queue -> 'a list val app : ('a -> unit) -> 'a queue -> unit val map : ('a -> 'b) -> 'a queue -> 'b queue val foldl : ('a * 'b -> 'b) -> 'b -> 'a queue -> 'b val foldr : ('a * 'b -> 'b) -> 'b -> 'a queue -> 'b - mkQueue (); stdIn:3.1-3.11 Warning: type vars not generalized because of value restriction are instantiated to dummy types (X1,X2,...) val it = - : ?.X1 queue -
Andere Tipps
Ich habe keine vollständige Antwort für Sie, aber ich konnte Sie in die richtige Richtung weisen. Sie sollten die Kompilation Manager (CM) nachschlagen verwendet, die in zu SML / NJ gebaut wird. Sie können für SML als Make daran denken.
Um eine Bibliothek aus der SML / NJ-Bibliothek verwenden Sie dann smlnj-lib.cm zur CM-Beschreibungsdatei Ihrer Anwendung hinzuzufügen. Dann können Sie die Deklarationen verwenden wie Queue aus dieser Bibliothek.
Die smlnj Website hat eine Dokumentation über die Kompilation Manager .
Hope dies zumindest Punkte, die Sie in der richtigen Richtung.
Wenn Sie eine ganze Warteschlange erstellen möchten, verwenden Sie den folgenden Code ein. Ersetzen ‚int‘ mit dem Datentyp Sie wollen.
val que = Queue.mkqueue(): int Queue.queue
Alles andere kann hier.