/* Пример списка из неоднородных элементов */
domains
test = symbol*
llist = l(list); s(symbol); i(integer); c(char); t(string); e(test)
list = llist*
predicates
append(list, list, list)
goal
makewindow(1, 7, 7, "answer", 15, 0, 8, 80),
/* Объединяем списки с одинаковыми элементами */
append([s(строка1), l([s(строка2), s(строка3)])], [s(строка4), s(строка5)],Ans),
write("Список 1: ", Ans), nl, nl,
/* Объединяем списки с различными элементами */
append([l([s("строка1"),s("строка2")]), s(строка3)], [c('c'),i(5)], Ans2),
write("Список 2: ", Ans2), nl.
clauses
/* Соединение двух списков */
append([], L, L).
append([X|L1], L2, [X|L3]) :- append(L1, L2, L3). |