| % use the directive 'dynamic' to declare a predicate that can be
% modified during later program execution
:- dynamic(aa/1).
main(_) :-
list_aa, nl,
remove_first,
list_aa, nl,
add_top,
list_aa, nl,
add_bottom,
list_aa.
list_aa :-
aa(X), writeq(aa(X)),nl, flush_output, fail ; true.
remove_first :- retract(aa(_)).
add_top :- asserta(aa(300)).
add_bottom :- assertz(aa(xyz)).
aa(1).
aa(2).
aa(3).
|