Comment utiliser la bibliothèque de files d'attente dans SML / NJ
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?
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.