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).