В настоящее время я работаю над очень коротким проектом на Prolog и просто застрял, пытаясь применить «фильтр», который я создал к списку. У меня есть то, что вы могли бы назвать фильтром готовым, но я не могу его применить. Было бы лучше, если бы я проиллюстрировал:Пролог: Фильтрация списка?
filter(A, B)
... выдает «true», если выполняются определенные условия.
filterList(A, [X, Y, Z])
... выводит список, который включает все элементы из второго аргумента, которые делают вывод фильтра ложной. (Таким образом, если фильтр (A, X) истинен, выходной сигнал [Y, Z]).
У меня есть функция «фильтр», но теперь мне нужно применить ее к списку, как показано на втором примере, за исключением всех элементов, для которых фильтр возвращает true при применении с первым аргументом.
Итак, если фильтр является простым A == B, функция должна получать A [A, B, A, C, D, A] и выводить [B, C, D], удалив все элементы, для которых применяется фильтр.
У меня возникли проблемы с базовой структурой функции, поэтому, если бы кто-нибудь мог предоставить базовый план для такой функции, это было бы очень полезно. Я упростил ситуацию настолько, насколько это возможно, поэтому я могу взять все, что вы можете предоставить и изменить для моих нужд.
Заранее благодарен!
Питти Наиш предлагает применить/3 в своих выводах, но я предполагаю, что в настоящее время нужно использовать call/n. apply/3 - просто вызов/3. – 2011-12-09 18:01:51
См. Обсуждение вопроса о том, почему ссылка на Naish оспаривается: http://www.complang.tuwien.ac.at/ulrich/Prolog-inedit/naish.html – 2011-12-10 16:17:49