Я вижу, что SML/NJ включает структуру очереди. Я не могу понять, как его использовать. Как использовать дополнительные библиотеки, предоставляемые SML/NJ?
Как использовать библиотеку Queue в SML/NJ
Ответы (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
-
У меня нет полного ответа для вас, но я могу указать вам правильное направление. Вы должны искать с помощью диспетчера компиляции (CM), встроенного в SML/NJ. Вы можете думать об этом как о создании для SML.
Чтобы использовать библиотеку из библиотеки SML/NJ, добавьте smlnj-lib.cm в файл описания CM вашего приложения. Затем вы можете использовать объявления, такие как Queue из этой библиотеки.
На веб-сайте smlnj есть некоторая документация по менеджеру компиляции.
Надеюсь, это хотя бы укажет вам правильное направление.
Если вы хотите создать целочисленную очередь, используйте следующий код. Замените «int» на нужный тип данных.
val que = Queue.mkqueue(): int Queue.queue
Все остальное можно найти здесь.