Как использовать библиотеку Queue в SML/NJ

Я вижу, что SML/NJ включает структуру очереди. Я не могу понять, как его использовать. Как использовать дополнительные библиотеки, предоставляемые SML/NJ?


person Joshua    schedule 13.10.2008    source источник


Ответы (3)


Структура Queue не указана в SML '97, но он присутствует в среде верхнего уровня 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
- 

Вы можете open структуру. Это позволяет вам не вводить Queue. перед всем. Однако не рекомендуется делать это на верхнем уровне, потому что это загрязняет окружающую среду и делает менее очевидным то, от чего вы зависите. (В рамках другой структуры я бы сказал, что это может быть приемлемо в некоторых ситуациях.)

$ 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
- 
person ephemient    schedule 01.07.2009

У меня нет полного ответа для вас, но я могу указать вам правильное направление. Вы должны искать с помощью диспетчера компиляции (CM), встроенного в SML/NJ. Вы можете думать об этом как о создании для SML.

Чтобы использовать библиотеку из библиотеки SML/NJ, добавьте smlnj-lib.cm в файл описания CM вашего приложения. Затем вы можете использовать объявления, такие как Queue из этой библиотеки.

На веб-сайте smlnj есть некоторая документация по менеджеру компиляции.

Надеюсь, это хотя бы укажет вам правильное направление.

person Vincent Ramdhanie    schedule 21.10.2008

Если вы хотите создать целочисленную очередь, используйте следующий код. Замените «int» на нужный тип данных.

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

Все остальное можно найти здесь.

person N A    schedule 24.08.2013