Prolog - regresar valor si es un átomo con DCG

 
Vista:

regresar valor si es un átomo con DCG

Publicado por Alvaro Fallas (1 intervención) el 05/09/2012 16:40:41
Hola a todos espero que se encuentren bien.
Estoy empezando con prolog y apenas había terminado de entender la sintaxis normal cuando ya debo empezar con la DCG. Tengo un pequeño problema. Necesito identificar un átomo usando DCG, con la otra sintaxis lo puedo hacer así

identificador(X,X):-atom(X).


entonces si hago la consulta sería así:

identificador(hola,X).

X= hola

ahora en DCG tengo algo así:

identificador(identi(ident))--> atom(ident), [ident].

sin embargo cuando hago la consulta no obtengo el resultado q deseo, obtengo esto:

identificador([y],X,Y).
false.

Alguna idea de como arreglar este pequeño inconveniente.
la idea es obtener:

identificador([y],X,Y).
identi(y).
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

regresar valor si es un átomo con DCG

Publicado por daril (2 intervenciones) el 05/04/2013 05:50:21
prueba con esto
identificador --> atom(X).

y para preguntar:

phrase(identificador,[X]). %%Si X es un atomo responde YES
phrase(identificador,[hola]).
Yes

o de esta forma para preguntar

oracion(hola,[]). %%Si X es un atomo responde YES
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar