1:- module(aop_helpers,[ 2 extend/3, 3 contract/2 4 ]). 5 6% 7% General helpers 8% 9 10% Add Context to a term as the first argument, e.g., 11% Term(Args) becomes Term(Context,Args...) 12extend(Context,Term,Extended) :- 13 is_list(Context), 14 Term =.. [Functor|Args], 15 append(Context, Args, ExtendedArgs), 16 Extended =.. [Functor | ExtendedArgs], 17 !. 18 19% Add Context to a term as the first argument, e.g., 20% Term(Args) becomes Term(Context,Args...) 21extend(Context,Term,Extended) :- 22 Term =.. [Functor|Args], 23 Extended =.. [Functor, Context | Args]. 24 25contract(Term, Contracted) :- 26 Term =.. [Functor|Args], 27 Args = [_Drop|ContractedArgs], 28 Contracted =.. [Functor|ContractedArgs]