Что вы показали, это не список пар. Это:
[1-a, 2-b, 3-c, 4-d].
С помощью этого списка вы можете сделать:
?- pairs_values([1-a, 2-b, 3-c, 4-d], V).
V = [a, b, c, d].
?- pairs_keys([1-a, 2-b, 3-c, 4-d], K).
K = [1, 2, 3, 4].
И предикат, который делает это явно:
seconds([], []).
seconds([_A-B|Pairs], [B|Secs]) :-
seconds(Pairs, Secs).
, если вы настаиваете, конечно:
secs([], []).
secs([{_A, B}|Pairs], [B|Secs]) :-
secs(Pairs, Secs).
Но вы можете сами решить шляпа лучше всего работает, просто имейте в виду:
?- write_canonical({1,a}).
{}(','(1,a))
true.
?- write_canonical(1-a).
-(1,a)
true.
Хороший материал на Прологе, среди прочего:
- Amzi Inc. Приключения в Прологе (веб)
- Learn Prolog Now! (паутина)
- «Искусство Пролога», Стерлинг и Шапиро (книга).
К сожалению, это было ошибкой. Вы правы, [1-a, 2-b, 3-c, 4-d] - это то, что я хотел. Кстати, спасибо за ссылки. – Hydar77