Möchte Prolog dazu bringen, aus einer gegebenen Liste eine sortierte zu ermitteln:
getfirst([H|T], H).
issmaller(X,Y) :- Y >= X.
issort([]).
issort([H|[]]).
issort([H|T]) :- getfirst(T,H2), issmaller(H,H2), issort(T).
countelem([],E,0).
countelem([H|T],H,N) :- N is N2 + 1, countelem(T,H,N2).
countelem([H|T],E,N) :- countelem(T,E,N).
ispermut([],[]).
ispermut([H1|T1],[H2|T2]) :- countelem([H1|T1],H1,N), countelem([H2|T2],H1,N), ispermut(T1,T2).
dosort(L1,L2) :- issort(L2), ispermut(L1, L2).
Die Relation countelem bereitet Schwierigkeiten. Erhalte die Meldung:
ERROR: is/2: Arguments are not sufficiently instantiated
Die Argumente sind nicht ausreichend instanziiert. Was bedeutet das?