У меня есть список сложных терминов с тем же функтором и arity, но разными аргументами. Что-то вроде этого:Получить список чисел из списка сложных терминов
Elements = [element(a, 1), element(b,2), element(c,3)]
И от этого я хочу, чтобы создать новый список, содержащий только вторые аргументы каждого сложного термина в списке, как это:
Numbers = [1,2,3]
Есть ли способ спроектировать предикат для решения этой проблемы для любой длины входного списка?
Да, это очень просто. У вас есть какие-то попытки? Подсказка: вы можете использовать 'element (_, N)' будет предоставлять все значения 'N' при обратном трассировке. Кроме того, посмотрите на 'findall' или' setof'. – lurker
Спасибо за комментарий. Да, уже потратил пару часов без результата (я очень новичок в Prolog). Большинство моих попыток вращались вокруг 'element (_, N)', но я узнаю, что я понимаю, как использовать его только для известного количества аргументов, что здесь не так. Попытаюсь использовать 'foreach' &' setof', спасибо за совет. – Timofey
Это 'findall' не' foreach'. ;) Если вы покажете свои попытки, вы получите дополнительную помощь в SO. :) – lurker