{def queue.add {lambda {:v :q} {let { {_ {A.addlast! :v :q}}} } ok}} -> queue.add {def queue.get {lambda {:q} {let { {:v {A.first :q}} {_ {A.subfirst! :q}} } :v}}} -> queue.get {def queue.empty? {lambda {:q} {A.empty? :q}}} -> queue.empty? {def Q {A.new}} -> Q [] {queue.add 1 {Q}} -> ok [1] {queue.add 2 {Q}} -> ok [1,2] {queue.add 3 {Q}} -> ok [1,2,3] {queue.get {Q}} -> 1 [2,3] {queue.add 4 {Q}} -> ok [2,3,4] {queue.empty? {Q}} -> false {queue.get {Q}} -> 2 [3,4] {queue.get {Q}} -> 3 [4] {queue.get {Q}} -> 4 [] {queue.get {Q}} -> undefined {queue.empty? {Q}} -> true