2010-09-26 4 views
12

Je n'ai aucune idée s'il existe une fonction de correspondance de modèle pour Common Lisp, néanmoins je dois faire ma propre fonction. Je n'ai aucune idée de Lisp. Quelqu'un peut-il donner des informations sur l'apprentissage de Lisp et, plus important encore, sur la façon de faire un pattern pattern dans Lisp. Je vais devoir passer un modèle et un fait et dire si elles correspondent. Un exemple seraitComment faire une correspondance de modèle en Common Lisp

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

doit correspondre

(Morphling (hitpoints 435) (mana 260)) 

il devrait également être en mesure de faire des comparaisons numériques de si un nombre est plus ou moins. Comme si un autre héros mana est moins que Morphling.

+0

Excellente description dans [sur Lisp] de Paul Graham (http://ep.yimg.com/ty/cdn/paulgraham/onlisp.pdf) (Chapitre 19, p246ff) –

Répondre

15

La fonctionnalité de correspondance de motif simple est expliquée dans divers livres Lisp.

et d'autres.

Les livres ci-dessus expliquent très bien l'implémentation de la mise en correspondance de formes dans Lisp. Des bibliothèques existent, par exemple cl-match, Optima et various others.

+0

Je ne peux pas utiliser les fonctions de bibliothèque.Je dois faire le mien. – gizgok

+4

@gizgok: un bon début serait d'apprendre Lisp en utilisant le livre de Winston/Horn. Bonus: il explique comment implémenter le pattern. –

2

Je ne veux pas de court-circuiter tout vous apprendre devez faire pour l'école (si tel est le contexte dans lequel ce projet est rendu nécessaire), mais vous pouvez étudier la bibliothèque cl-ppcre, http://weitz.de/cl-ppcre/, pour voir comment un Lisper expérimenté le fait. Vous pouvez télécharger la source et l'étudier pour comprendre. Je voudrais également seconder le livre par Norvig, http://norvig.com/paip.html, mentionné ci-dessus. Vous pouvez apprendre beaucoup de ce livre.

Questions connexes