У меня есть список, состоящий из небольших списков внутри, каждый список состоит из 2 элементов:
[[a,1],[b,2],[c,3]]
Я использую функцию take (1, L, R), чтобы взять первый элемент из списка L и вернуть элемент R. Код для функции take находится здесь:
take(0,X,X).
take(N,[H|T],[H|R]):-
N>0, M is N-1,
take(M,T,R).
На данный момент забег может выглядеть так:
1 ?- take(1,[[a],[b],[c]],Taken).
Taken = [[a], [b], [c]]
Что совпадает с вводом! То же самое для «обычного» списка глубины 1 уровня:
2 ?- take(1,[a,b,c],Taken).
Taken = [a, b, c]
Вопрос:
Вопрос для вас: как я могу сделать результат похожим на:
1 ?- take(1,[[a],[b],[c]],Taken).
Taken = [a]
Я хочу вернуть первые N элементов списка, которые я отправил.