Consider the use of semi-contextual notation to replace subsequences in DCG:
eos([], []). replace(_, _) --> call(eos), !. replace(Find, Replace), Replace --> Find, !, replace(Find, Replace). replace(Find, Replace), [C] --> [C], replace(Find, Replace). substitute(Find, Replace, Request, Result):- phrase(replace(Find, Replace), Request, Result).
Example:
?- substitute("a", "b", "atesta", R), atom_codes(A, R). R = [98, 116, 101, 115, 116, 98], A = btestb.
Also underscores_are_much_more_readable than MixedCaseNamesAsYouSee.
source share