Я не хотел быть противоречивым или заставить кого-то сделать мою работу; Я просто хотел получить совет, извините за то, что не прояснил.
Я сам это сейчас реализовал, но не могли бы вы, ребята, предложить улучшения или лучшие способы сделать это? В Прологе я часто пишу предикат с, скажем, счетчиком или набором счетчиков и получаю предикат с меньшим количеством аргументов, чтобы вызывать предложения с дополнительными аргументами. Это часто приводит к тому, что получается совсем немного кода. Во всяком случае, вот моя реализация, которую я только что сделал:
item_at( N, L, Item ) :-
item_at( N, 0, L, Item ).
item_at( N, Count, [H|_], Item ) :-
CountNew is Count + 1,
CountNew = N,
Item = H.
item_at( N, Count, [_|T], Item ) :-
CountNew is Count + 1,
item_at( N, CountNew, T, Item ).
Есть комментарии? Спасибо :). Использование:
?- item_at(3,[a,b,c,d,e],Item).
Item = c ;