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