2010-09-26 18 views
12

Non ho idea se esista una funzione di corrispondenza del modello per Common Lisp, tuttavia devo eseguire la mia funzione. Non ho idea di Lisp. Qualcuno può dare un colpo d'occhio sull'apprendimento del Lisp e, soprattutto, su come fare la corrispondenza dei pattern in Lisp. Dovrò passare uno schema e un fatto e dire se corrispondono. Un esempio potrebbe essereCome eseguire la corrispondenza del modello in Common Lisp

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

deve corrispondere

(Morphling (hitpoints 435) (mana 260)) 

si deve anche essere in grado di fare confronti numerici anche di se un numero maggiore o minore. Come se un altro eroe mana fosse meno quello di Morphling.

+0

Eccellente descrizione in [On Lisp] di Paul Graham (http://ep.yimg.com/ty/cdn/paulgraham/onlisp.pdf) (capitolo 19, p246ff) –

risposta

15

La funzionalità di corrispondenza dei modelli semplice è spiegata in vari libri Lisp.

e altri.

Sopra i libri si spiega molto bene l'implementazione della corrispondenza dei modelli in Lisp.

Esistono librerie, ad esempio cl-match, Optima e various others.

+0

Non riesco a utilizzare le funzioni di libreria. Devo fare il mio. – gizgok

+4

@gizgok: un buon inizio sarebbe imparare Lisp usando il libro Winston/Horn. Bonus: spiega l'implementazione della corrispondenza del modello. –

2

Io non voglio corto circuito qualsiasi imparare quello che devi fare per la scuola (se questo è il contesto in cui è reso necessario questo progetto), ma potresti studiare la libreria cl-ppcre, http://weitz.de/cl-ppcre/, per vedere come fa Lisper esperto. Puoi scaricare la fonte e studiarla per capire. Vorrei anche secondo il libro di Norvig, http://norvig.com/paip.html, menzionato sopra. Puoi imparare così tanto da quel libro.