Я встретил незнакомый бит синтаксиса Prolog в статье Ли Наиша Логическое программирование более высокого порядка в Prolog. Вот первый пример кода из статьи:
% insertion sort (simple version)
isort([], []).
isort(A.As, Bs) :-
isort(As, Bs1),
isort(A, Bs1, Bs).
% insert number into sorted list
insert(N, [], [N]).
insert(N, H.L, N.H.L) :-
N =< H.
insert(N, H.LO, H.L) :-
N > H,
insert(N, LO, L).
Моя путаница с A.As
в isort(A.As, Bs) :-
. Из контекста он выглядит как альтернативный синтаксис для списков, эквивалент isort([A|As], Bs) :-
.
Также N.H.L
представляется более удобным способом сказать [N|[H|L]]
.
Но SWI Prolog не примет этот необычный синтаксис (если я не ошибаюсь).
Кто-нибудь узнает об этом? моя гипотеза правильная? Какой интерпретатор Prolog принимает это как действительный синтаксис?