GNU Prolog 是受支持的Logtalk 后端编译器之一。有了它,您可以访问(便携式)库(和开发人员工具!),让您轻松解决问题。例如,如果您的字符串使用原子表示,则可以使用 atom::replace_sub_atom/4 谓词:
| ?- {types(loader)}.
...
yes
| ?- atom::replace_sub_atom(' ', '', 'Dog ', Output).
Output = 'Dog'
yes
| ?- atom::replace_sub_atom(' ', '', ' becomes ', Output).
Output = becomes
如果您使用双引号术语,它们的含义取决于double_quotes 标志值,在这种情况下,您可以使用list::subtract/3 谓词。例如:
| ?- current_prolog_flag(double_quotes, Value).
Value = codes
yes
yes
| ?- list::subtract("Dog ", " ", Output).
Output = [68,111,103]
yes
| ?- list::subtract(" becomes ", " ", Output).
Output = [98,101,99,111,109,101,115]
yes
| ?- set_prolog_flag(double_quotes, chars).
yes
| ?- list::subtract("Dog ", " ", Output).
Output = ['D',o,g]
yes
| ?- list::subtract(" becomes ", " ", Output).
Output = [b,e,c,o,m,e,s]
yes
| ?- set_prolog_flag(double_quotes, atom).
yes
| ?- atom::replace_sub_atom(" ", "", "Dog ", Output).
Output = 'Dog'
yes
| ?- atom::replace_sub_atom(" ", "", " becomes ", Output).
Output = becomes
yes