Estoy escribiendo un juego de texto y aventuras en Prolog, y estoy imprimiendo salidas de salas. Tengo el código que hace:Obteniendo todas las soluciones a un predicado en Prolog
exits_from(Room) :-
connected(Room, X),
write(X), write(' ').
donde conectado/2 es:
connected(X, Y) :- path(X, Y).
connected(X, Y) :- path(Y, X).
y la ruta es:
path(room, hallway).
path(hallway, foyer).
y así sucesivamente.
Cuando estoy imprimiendo las salidas de una habitación, obtiene la primera, luego quiere un ';' para decir que quiero otra solución. ¿Hay alguna forma de obligar a un predicado a calcular el resultado por completo, para que el jugador no tenga que seguir pidiendo más salidas?
se construye en forall para algunas implementaciones? No es válido en gprolog aparentemente. ¡Pero gracias por la sugerencia de retroceder! – Kai
De acuerdo con este http://www.gprolog.org/manual/gprolog.html#htoc103 gprolog tiene findall/3. – pfctdayelise
findall/3 no es lo mismo que forall/2. – Kaarel