Pergunta

eu ver que o SML / NJ inclui uma estrutura de fila. Eu não consigo descobrir como usá-lo. Como faço para usar as bibliotecas adicionais fornecidos pela SML / NJ?

Foi útil?

Solução

O Queue estrutura não é especificado por SML ' 97, mas está presente no ambiente de nível superior do 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
- 

Você pode open uma estrutura. Isto permite-lhe evitar a digitação Queue. na frente de tudo. É desencorajado de fazer isso no nível superior, porém, porque polui o meio ambiente e torna muito menos óbvio que você está dependendo. (Dentro de uma outra estrutura, eu diria que pode ser aceitável em algumas situações.)

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

Outras dicas

Eu não tenho uma resposta completa para você, mas eu poderia apontar na direção certa. Você deve olhar para cima usando o gerenciador de compilação (CM), que é incorporado ao SML / NJ. Você pode pensar nisso como fazer para SML.

Para usar uma biblioteca da biblioteca SML / NJ você em seguida, adicione smlnj-lib.cm para o arquivo de descrição CM de sua aplicação. Então você pode usar as declarações como Queue daquele biblioteca.

O site smlnj tem alguma documentação sobre a compilação gerente .

Hope isso pelo menos pontos-lo na direção certa.

Se você quiser criar um inteiro fila, utilize o seguinte código. Substitua 'int' com o tipo de dados que deseja.

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

Tudo o resto pode ser encontrada aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top