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?