How to use the queue library in SML / NJ

I see that SML / NJ includes a queue structure. I can’t figure out how to use it. How to use additional libraries provided by SML / NJ?

+3
source share
3 answers

The structure is not specified by SML '97, but it is present in the SML / NJ top-level environment. Queue

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

, . (CM), SML/NJ. " SML".

SML/NJ, smlnj-lib.cm CM . , Queue .

- smlnj .

, , .

+1

If you want to create an entire chain, use the following code. Replace 'int' with the desired data type.

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

Everything else can be found here.

0
source

Source: https://habr.com/ru/post/1698191/


All Articles