Question

Je vois que le SML / NJ inclut une structure de file d’attente. Je n'arrive pas à comprendre comment l'utiliser. Comment utiliser les bibliothèques supplémentaires fournies par SML / NJ?

Était-ce utile?

La solution

La structure de la File d'attente n'est pas spécifié par SML '97, mais il est présent dans l'environnement de niveau supérieur de SML / NJ.

$ 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
- 

Vous pouvez ouvrir une structure. Cela vous évite de taper Queue. devant tout. Toutefois, il est déconseillé de faire cela au plus haut niveau, car cela pollue l’environnement et rend beaucoup moins évidente ce à quoi vous dépendez. (Dans une autre structure, je dirais que cela pourrait être acceptable dans certaines situations.)

$ 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
- 

Autres conseils

Je n'ai pas de réponse complète à vous donner mais je pourrais vous orienter dans la bonne direction. Vous devriez rechercher en utilisant le gestionnaire de compilation (CM) intégré à SML / NJ. Vous pouvez penser à cela comme à Make for SML.

Pour utiliser une bibliothèque de la bibliothèque SML / NJ, ajoutez ensuite smlnj-lib.cm au fichier de description CM de votre application. Vous pouvez ensuite utiliser les déclarations telles que File d'attente de cette bibliothèque.

Le site Web smlnj contient de la documentation sur le gestionnaire de compilation .

J'espère que cela vous indique au moins la bonne direction.

Si vous souhaitez créer une file d'attente entière, utilisez le code suivant. Remplacez 'int' par le type de données souhaité.

val que = Queue.mkqueue(): int Queue.queue

Tout le reste peut être trouvé ici.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top