2010-09-26 9 views
12

No tengo idea de si existe una función de coincidencia de patrones para Common Lisp, sin embargo, tengo que hacer mi propia función. No tengo idea sobre Lisp. ¿Puede alguien darse cuenta de cómo aprender Lisp y lo más importante, cómo hacer coincidir patrones en Lisp? Tendré que pasar un patrón y un hecho y decir si coinciden. Un ejemplo seríaCómo hacer coincidencia de patrones en Common Lisp

(heroes (hitpoints=hp) (mana=m)) 

debe coincidir con

(Morphling (hitpoints 435) (mana 260)) 

También debe ser capaz de hacer comparaciones numéricas también de si un número es mayor o menor. Al igual que si otro héroe de maná es menos que Morphling.

+0

Excelente descripción en [en Lisp] de Paul Graham (http://ep.yimg.com/ty/cdn/paulgraham/onlisp.pdf) (Capítulo 19, p246ff) –

Respuesta

15

La funcionalidad de coincidencia de patrones simple se explica en varios libros de Lisp.

y otros.

Los libros anteriores explican muy bien la implementación de la coincidencia de patrones en Lisp.

Existen bibliotecas, por ejemplo cl-match, Optima y various others.

+0

No puedo usar las funciones de la biblioteca. Tengo que hacer mío. – gizgok

+4

@gizgok: un buen comienzo sería aprender Lisp usando el libro de Winston/Horn. Bonificación: explica la implementación de la coincidencia de patrones. –

2

no quiero un cortocircuito en cualquier aprendizaje que hay que hacer para la escuela (si ese es el contexto en el que se hizo necesario este proyecto), pero podrías estudiar la biblioteca cl-ppcre, http://weitz.de/cl-ppcre/, para ver cómo lo hace un Lisper experimentado. Puede descargar la fuente y estudiarla para comprenderla. También secundaría el libro de Norvig, http://norvig.com/paip.html, mencionado anteriormente. Puedes aprender mucho de ese libro.