:- ensure_loaded( library(lists) ). flatoms( Atoms, Atom ) :- flatoms( Atoms, [], Mota ), reverse( Mota, AtomCs ), atom_codes( Atom, AtomCs ). flatoms( Atoms, Acc, Codes ) :- ( Atoms = [] -> Acc = Codes ; ( Atoms = [H|T] -> flatoms( H, Acc, Acc1 ), flatoms( T, Acc1, Codes ) ; atom_codes( Atoms, AtomCodes ), reverse( AtomCodes, Addition ), append( Addition, Acc, Codes ) ) ).