Actualmente estoy trabajando en un proyecto muy corto en Prolog, y me atasqué tratando de aplicar un "filtro" que he creado a una lista. Tengo lo que podría llamar el filtro listo, pero no puedo aplicarlo. Sería mejor si lo ilustrara:Prólogo: ¿Filtrar una lista?
filter(A, B)
... resultados 'verdaderos' si se cumplen ciertas condiciones.
filterList(A, [X, Y, Z])
... genera una lista que incluye todos los elementos desde el segundo argumento que hacen que la salida del filtro falsa. (Entonces, si el filtro (A, X) es verdadero, la salida es [Y, Z]).
Tengo la función "filtro" lista, pero ahora necesito aplicarla a una lista como se muestra en el segundo ejemplo, excluyendo todos los elementos para los que el filtro devuelve verdadero cuando se aplica con el primer argumento.
Entonces, si el filtro es un simple A == B, se supone que la función debe recibir A [A, B, A, C, D, A] y la salida [B, C, D], habiendo eliminado todo los elementos para los cuales se aplica el filtro, obviamente.
Tengo problemas con la estructura básica de la función, por lo que si alguien pudiera proporcionar un esquema básico para una función como esta, sería de gran ayuda. He simplificado mi situación tanto como sea posible para poder tomar lo que sea que pueda proporcionar y modificarlo para mis necesidades.
¡Gracias de antemano!
Pitty Naish propone aplicar/3 en sus conclusiones, pero supongo que el camino actual es usar call/n. apply/3 es simplemente call/3. –
Consulte para una discusión por qué se disputa la referencia de Naish: http://www.complang.tuwien.ac.at/ulrich/Prolog-inedit/naish.html –