Я наткнулся на незнакомый фрагмент синтаксиса Пролога в статье Ли НейшаЛогическое программирование высшего порядка на Прологе. Вот первый пример кода из статьи:
% 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) :-
. Из контекста кажетсяальтернативным синтаксисом cons для списков, эквивалентным isort([A|As], Bs) :-
.
Кроме того, N.H.L
кажется более удобным способом сказать [N|[H|L]]
.
Но SWI Prolog не примет этот необычный синтаксис (если только я не делаю что-то неправильно).
Кто-нибудь узнает его? моя гипотеза верна? Какой интерпретатор Пролога принимает этот синтаксис как допустимый?