@ julkiewicz почти там:
isin(a, _).
isin(Char, List) :-
member(Char, List),
char_code(Char, Code),
write(Char),
Code1 is Code-1,
char_code(Char1, Code1),
isin(Char1, List).
Обратите внимание, что предикат всегда будет успешным на a
, так же, как ваша оригинальная версия всегда будет успешной на 0
.Вы можете предотвратить это, изменив базовое предложение на что-то вроде
isin(Char, _) :-
char_code(a, A),
Char is A-1.
(но это действительно уродливый хак.)