NB. The queue object template data =: '' queue =: monad def 0 'method value' =. 2 {. y. if. method -: 'type' do. 'queue' elseif. method -: 'emptyp' do. 0 = # data elseif. method -: 'enter' do. for_effect_only data =: data , < value elseif. method -: 'front' do. if. 0 = # data do. 'front: queue is empty' else. > {. data end. elseif. method -: 'remove' do. if. 0 = # data do. 'remove: queue is empty' else. for_effect_only data =: }. data end. elseif. method -: 'size' do. # data elseif. method -: 'print' do. if. 0 = # data do. 'print: queue is empty' else. for_effect_only display 'front of queue' s =. data while. 0 < # s do. for_effect_only display > {. s s =. }. s end. end. elseif. 1 do. root_object method ; value end. )