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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top