我在Lee Naish的论文"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).
Run Code Online (Sandbox Code Playgroud)
我的困惑是A.As在isort(A.As, Bs) :-.从上下文来看,它似乎是列表的替代cons语法,相当于isort([A|As], Bs) :-.
也N.H.L似乎是一个更方便的方式来表达[N|[H|L]].
但SWI Prolog不接受这种不寻常的语法(除非我做错了).
有谁认出来了吗?我的假设是正确的吗?哪个Prolog解释器接受它作为有效语法?