This commit is contained in:
Ingy döt Net 2013-10-27 22:24:23 +00:00
parent 6f050a029e
commit 776bba907c
3887 changed files with 59894 additions and 7280 deletions

View file

@ -6,3 +6,5 @@ Operations:
* push (aka ''enqueue'') - add element
* pop (aka ''dequeue'') - pop first element
* empty - return truth value when empty
{{Template:See also lists}}

View file

@ -0,0 +1,15 @@
# -*- coding: utf-8 -*- #
MODE DIETITEM = STRUCT(
STRING food, annual quantity, units, REAL cost
);
# Stigler's 1939 Diet ... #
FORMAT diet item fmt = $g": "g" "g" = $"zd.dd$;
[]DIETITEM stigler diet = (
("Cabbage", "111","lb.", 4.11),
("Dried Navy Beans", "285","lb.", 16.80),
("Evaporated Milk", "57","cans", 3.84),
("Spinach", "23","lb.", 1.85),
("Wheat Flour", "370","lb.", 13.33),
("Total Annual Cost", "","", 39.93)
)

View file

@ -0,0 +1,20 @@
#!/usr/bin/a68g --script #
# -*- coding: utf-8 -*- #
MODE OBJVALUE = DIETITEM;
PR read "prelude/link.a68" PR;# c.f. [[rc:Queue/Definition]] #
PR read "prelude/queue_base.a68" PR; # c.f. [[rc:Queue/Definition]] #
PR read "test/data_stigler_diet.a68" PR;
OBJQUEUE example queue; obj queue init(example queue);
FOR i TO UPB stigler diet DO
# obj queue put(example queue, stigler diet[i]) or ... #
stigler diet[i] +=: example queue
OD;
printf($"Get remaining values from queue:"l$);
WHILE NOT obj queue is empty(example queue) DO
# OR example queue ISNT obj queue empty #
printf((diet item fmt, obj queue get(example queue), $l$))
OD

View file

@ -0,0 +1,22 @@
MODULE UseQueue;
IMPORT StdLog,Queue,Boxes;
PROCEDURE Do*;
VAR
q: Queue.Queue;
o: Boxes.Object;
BEGIN
q := Queue.NewQueue(6);
q.Push(Boxes.NewInteger(1));
q.Push(Boxes.NewInteger(2));
q.Push(Boxes.NewInteger(3));
o := q.Pop();
o := q.Pop();
q.Push(Boxes.NewInteger(4));
o := q.Pop();
o := q.Pop();
q.Push(Boxes.NewInteger(5));
o := q.Pop();
StdLog.String("Is empty: ");StdLog.Bool(q.IsEmpty());StdLog.Ln
END Do;
END UseQueue.

View file

@ -0,0 +1,4 @@
mutable q = Queue(); // or use immutable version as per Haskell example
def empty = q.IsEmpty(); // true at this point
q.Push(empty); // or Enqueue(), or Add()
def a = q.Pop(); // or Dequeue() or Take()

View file

@ -0,0 +1,12 @@
import queues
var deq: TQueue[int] = initQueue[int]()
deq.enqueue(26)
deq.add(99) # same as enqueue()
deq.enqueue(2)
echo("Dequeue size: ", deq.len())
echo("De-queue: ", deq.dequeue())
echo("De-queue: ", deq.dequeue())
echo("De-queue: ", deq.dequeue())
#echo("De-queue: ", deq.dequeue()) # dequeue an empty dequeue raises [EAssertionFailed]