Come posso usare la libreria Queue in SML / NJ
Domanda
Vedo che SML / NJ include una struttura di coda. Non riesco a capire come usarlo. Come posso utilizzare le librerie aggiuntive fornite da SML / NJ?
Soluzione
La Queue
non è specificato da SML '97, ma è presente nell'ambiente di livello superiore di 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 -
Puoi aprire
una struttura. Ciò ti consente di evitare di digitare Queue.
davanti a tutto. È scoraggiato farlo ai massimi livelli, perché inquina l'ambiente e rende molto meno ovvio da cosa si dipende. (All'interno di un'altra struttura direi che potrebbe essere accettabile in alcune situazioni.)
$ 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 -
Altri suggerimenti
Non ho una risposta completa per te, ma potrei indicarti la giusta direzione. Dovresti cercare usando il compilation manager (CM) integrato in SML / NJ. Puoi pensarlo come Make for SML.
Per utilizzare una libreria dalla libreria SML / NJ, aggiungere smlnj-lib.cm al file di descrizione CM dell'applicazione. Quindi è possibile utilizzare le dichiarazioni come Queue da quella libreria.
Il sito web smlnj ha una documentazione sul gestore della compilazione .
Spero che questo ti punti almeno nella giusta direzione.
Se si desidera creare una coda intera, utilizzare il seguente codice. Sostituisci "int" con il tipo di dati che desideri.
val que = Queue.mkqueue(): int Queue.queue
Tutto il resto può essere trovato qui.