Pregunta

Veo que SML / NJ incluye una estructura de cola. No puedo entender cómo usarlo. ¿Cómo uso las bibliotecas adicionales proporcionadas por SML / NJ?

¿Fue útil?

Solución

La Queue estructura no está especificado por SML '97, pero está presente en el entorno de nivel superior 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
- 

Puede abrir una estructura. Esto le permite evitar escribir Queue. delante de todo. Sin embargo, se desaconseja hacerlo en el nivel superior, ya que contamina el medio ambiente y hace que sea mucho menos obvio de lo que depende. (Dentro de otra estructura, diría que podría ser aceptable en algunas situaciones).

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

Otros consejos

No tengo una respuesta completa para ti, pero podría orientarte en la dirección correcta. Debería buscar utilizando el administrador de compilación (CM) integrado en SML / NJ. Puedes considerarlo como Make for SML.

Para usar una biblioteca de la biblioteca SML / NJ, agregue smlnj-lib.cm al archivo de descripción CM de su aplicación. Luego puede usar las declaraciones como Cola de esa biblioteca.

El sitio web smlnj tiene documentación sobre el administrador de compilación .

Espero que esto al menos te señale en la dirección correcta.

Si desea crear una Cola entera, use el siguiente código. Reemplace 'int' con el tipo de datos que desee.

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

Todo lo demás se puede encontrar aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top