Prolog - sintaxe incomum para listas

Eu me deparei com um pouco desconhecido da sintaxe do Prolog no artigo de Lee NaishProgramação lógica de ordem superior no Prolog. Aqui está a primeira amostra de código do papel:

<code>% 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).
</code>

Minha confusão é comA.As emisort(A.As, Bs) :-. Do contexto,aparece para ser uma sintaxe de cons alternativa para listas, o equivalente aisort([A|As], Bs) :-.

TambémN.H.L parece ser uma maneira mais conveniente de dizer[N|[H|L]].

Mas o SWI Prolog não aceita esta sintaxe incomum (a menos que eu esteja fazendo algo errado).

Alguém reconhece isso? minha hipótese é correta? Qual interpretador do Prolog aceita essa sintaxe como válida?

questionAnswers(3)

yourAnswerToTheQuestion