52 lines
1.1 KiB
Plaintext
52 lines
1.1 KiB
Plaintext
go2 =>
|
|
println("Test 2"),
|
|
queue_test2,
|
|
nl.
|
|
|
|
empty2() = [].
|
|
push2(Queue, Value) = Q2 =>
|
|
Q2 = [Value] ++ Queue.
|
|
pop2(Q,_) = _, Q==[] ; var(Q) =>
|
|
throw $error(empty_queue,pop,'Q'=Q).
|
|
pop2(Queue,V) = [Queue[I] : I in 1..Queue.len-1] =>
|
|
V = Queue.last().
|
|
|
|
queue_test2 =>
|
|
% create an empty queue
|
|
Q = empty2(),
|
|
printf("Create queue %w%n%n", Q),
|
|
|
|
% add numbers 1 and 2
|
|
println("Add numbers 1 and 2 : "),
|
|
Q := Q.push2(1).push2(2),
|
|
|
|
% display queue
|
|
printf("Q: %w\n\n", Q),
|
|
|
|
% pop element
|
|
Q := Q.pop2(V),
|
|
|
|
% display results
|
|
printf("Pop : Value: %w Queue: %w\n\n", V, Q),
|
|
|
|
% test the queue
|
|
print("Test of the queue: "),
|
|
( Q.empty() -> println("Queue empty"); println("Queue not empty") ),
|
|
nl,
|
|
|
|
% pop the elements
|
|
print("Pop the queue : "),
|
|
Q := Q.pop2(V2),
|
|
printf("Value %w Queue : %w%n%n", V2, Q),
|
|
|
|
println("Pop empty queue:"),
|
|
catch(_ = Q.pop2(_V),Exception,println(Exception)),
|
|
|
|
% command chaining
|
|
println("\nCommand chaining: "),
|
|
Q := Q.push2(3).push2(4),
|
|
Q := Q.pop2(V3).pop2(V4),
|
|
printf("V3: %w V4: %w\n", V3, V4),
|
|
nl,
|
|
println(q=Q).
|