:- object(stack).
:- public(push/3).
push(Element, Stack, [Element| Stack]).
:- public(pop/3).
pop([Top| Stack], Top, Stack).
:- public(empty/1)
empty([]).
:- end_object.