. . :
,
,
.
.
, . , . .
, , .
10: .
domains
list=integer*
predicates
insert_sort (list, list)
insert (integer, list, list)
asc_order (integer, integer)
clauses
insert_sort ([], []).
insert_sort ([H1|T1], L2):- insert_sort (T1, T2),
insert(H1, T2, L2).
insert (X, [H1| T1], [H1| T2]):- asc_order (X, H1),!,
insert (X, T1, T2).
insert (X, L1, [X| L1]).
asc_order (X, Y):- X>Y.
goal
insert_sort ([4, 7, 3, 9], L).
. , , insert_sort, H1 , . .
, , insert, . H1 9, insert (9, [], [9]).
, insert_sort. 3 asc_order, asc_order (3, 9):- 3>9. , , , 3 9: insert (3, [9], [3, 9]).
insert_sort, : insert_sort ([3, 9], [3, 9]).
7 asc_order asc_order (7, 3):- 7>3. , 3 insert , [9]: insert (7, [9], _). asc_order (7, 9):- 7>9 , , insert, insert_sort.
7 3 9: insert (7, [3, 9], [3, 7, 9]).
4 asc_order asc_order (4, 3):- 4>3. , 3 insert , [7, 9]: insert (4, [7, 9], _). asc_order (4, 7):- 4>7 , , insert, insert_sort.
4 3 7:
insert (4, [3, 7, 9], [3, 4, 7, 9]).
insert_sort [4, 7, 3, 9], [3, 4, 7, 9]).