Prolog - sintaxis de contras inusual para listas

Me he topado con una parte poco familiar de la sintaxis de Prolog en el artículo de Lee Naish.Programación lógica de orden superior en Prolog. Aquí está el primer ejemplo de código del artículo:

<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>

Mi confusión es conA.As enisort(A.As, Bs) :-. Desde el contexto,aparece para ser una sintaxis de contras alternativa para las listas, el equivalente deisort([A|As], Bs) :-.

TambiénN.H.L Parece ser una forma más conveniente de decir[N|[H|L]].

Pero SWI Prolog no aceptará esta sintaxis inusual (a menos que esté haciendo algo mal).

¿Alguien lo reconoce? ¿Es mi hipótesis correcta? ¿Qué intérprete de Prolog lo acepta como sintaxis válida?

Respuestas a la pregunta(3)

Su respuesta a la pregunta