Я вижу, что 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
Все остальное можно найти здесь.