Every Prolog I have tried gives a different result to this 'simple' query:
:- initialization(main).
mangle_char(C, [C]) :- (C >= 97, C =< 122; C >= 48, C =< 57), !.
mangle_char(C1, [95, C2, C3]) :-
N is C1 // 16, hexdigit(N, C2),
M is C1 - N * 16, hexdigit(M, C3).
hexdigit(N, M) :- N < 10, M is N + 48, !.
hexdigit(N, M) :- M is N + 87.
main :- findall(CS, (member(C, [100,101,102,97,117,108,116,95,115,101,116,116,105,110,103]), mangle_char(C,CS)), MSTRING), write(MSTRING), nl, halt.
I have tried SWI (7.2.3):
[[100],[101],[102],[97],[117],[108],[116],[95,53,102],[115],[101],[116],[116],[105],[110],[103]]
Yap (6.2.2):
[]
and GProlog (1.4.5):
warning: samples/
test.pl:1: user directive caused exception: error(existence_error(procedure,'$mangle_char/2_$aux1'/0),mangle_char/0)
Any ideas?