encode/3 pro překódování znakových sad:
kde![]()
encode(TermTable,Input,L):-
item(Input+Li)
-> (Li=[N>R]
-> :-@[TermTable,R,RR],
L=[encode(TermTable,N)>RR]
; L=[]).
Použití uživatelského módu je naprosto stejné jako u módů knihovních:
?- encode(latin2Txt,s("třásně"))+L
| :-> tokenA("trasne").
L= [encode(latin2Txt,s(""))>'trasne']
Yes
Při zavádění nového módu je zpravidla nutné nejprve doplnit proceduru
primitiva item tak, aby bylo možné vybalovat argumenty
vnořené v selektoru nového módu. Jak jsme si ukázali v této části,
takovou úpravu je možno provést bez přímého zásahu do kódu knihovny.
Obvykle jsou však navíc doplněny o klauzule nového módu i procedury dalších
konstruktorů a zde se již bez zásahu do knihovních predikátů neobejdeme.
Pouhé použití uživatelského módu nemusí být vždy postačující.