tengo una lista que se crea de la siguiente manera:Cómo crear variable global en el prólogo
tab([(top,left),(top,middle),(top,right),(center,left),(center,middle),
(center,right),(bottom,left),(bottom,middle),(bottom,right)]).
deseo de crear un AllPosition variable global que es una ficha. Así que hice lo siguiente:
tab(AllPos).
es esto correcto?
Luego tengo que seguir el problema: Tengo una función que recibe uno de los pares en la pestaña. Que deseo eliminar Así que hice esto:
place(Line, Column, Tab) :-
AllPos \== [_,_] /*while AllPos isn't empty - not sur if this is done this way*/ -> (member((Line,Column), AllPos) -> (erase(AllPos, (Line,Column), AllPos)).
donde erase(List, Element, NewList)
borra el elemento de elemento de la lista y crea una nueva lista newList igual a la lista pero sin elemento. Ambas funciones member
y erase
están funcionando.
La cosa es ... Como habrás notado, uso AllPos
en todas partes. Eso es porque quiero, quiero modificarlo para poder usarlo más tarde (después de haber eliminado algunos elementos) en otra función. Es mi lógica ¿verdad? ¿Podré usar AllPos modificado en otra función? Gracias
Por favor, vea también las preguntas y respuestas sobre cómo [** evitar las variables globales **] (http://stackoverflow.com/questions/19005042/how-to-avoid-using-assert-and-retractall-in -prolog-to-implement-global-or-state) en Prolog. – mat