49 lines
1.5 KiB
Standard ML
49 lines
1.5 KiB
Standard ML
- open Fifo;
|
|
opening Fifo
|
|
datatype 'a fifo = ...
|
|
exception Dequeue
|
|
val empty : 'a fifo
|
|
val isEmpty : 'a fifo -> bool
|
|
val enqueue : 'a fifo * 'a -> 'a fifo
|
|
val dequeue : 'a fifo -> 'a fifo * 'a
|
|
val next : 'a fifo -> ('a * 'a fifo) option
|
|
val delete : 'a fifo * ('a -> bool) -> 'a fifo
|
|
val head : 'a fifo -> 'a
|
|
val peek : 'a fifo -> 'a option
|
|
val length : 'a fifo -> int
|
|
val contents : 'a fifo -> 'a list
|
|
val app : ('a -> unit) -> 'a fifo -> unit
|
|
val map : ('a -> 'b) -> 'a fifo -> 'b fifo
|
|
val foldl : ('a * 'b -> 'b) -> 'b -> 'a fifo -> 'b
|
|
val foldr : ('a * 'b -> 'b) -> 'b -> 'a fifo -> 'b
|
|
- val q = empty;
|
|
val q = Q {front=[],rear=[]} : 'a fifo
|
|
- isEmpty q;
|
|
val it = true : bool
|
|
- val q' = enqueue (q, 1);
|
|
val q' = Q {front=[],rear=[1]} : int fifo
|
|
- isEmpty q';
|
|
val it = false : bool
|
|
- val q'' = List.foldl (fn (x, q) => enqueue (q, x)) q' [2, 3, 4];
|
|
val q'' = Q {front=[],rear=[4,3,2,1]} : int fifo
|
|
- peek q'';
|
|
val it = SOME 1 : int option
|
|
- length q'';
|
|
val it = 4 : int
|
|
- contents q'';
|
|
val it = [1,2,3,4] : int list
|
|
- val (q''', v) = dequeue q'';
|
|
val q''' = Q {front=[2,3,4],rear=[]} : int fifo
|
|
val v = 1 : int
|
|
- val (q'''', v') = dequeue q''';
|
|
val q'''' = Q {front=[3,4],rear=[]} : int fifo
|
|
val v' = 2 : int
|
|
- val (q''''', v'') = dequeue q'''';
|
|
val q''''' = Q {front=[4],rear=[]} : int fifo
|
|
val v'' = 3 : int
|
|
- val (q'''''', v''') = dequeue q''''';
|
|
val q'''''' = Q {front=[],rear=[]} : int fifo
|
|
val v''' = 4 : int
|
|
- isEmpty q'''''';
|
|
val it = true : bool
|