2010-09-26 13 views
12

Nie mam pojęcia, czy istnieje funkcja dopasowywania wzorca dla Common Lisp, niemniej jednak muszę wykonać swoją własną funkcję. Nie mam pojęcia o Lisp. Czy ktoś może porozmawiać o nauce Lispa i, co najważniejsze, o tym, jak zrobić dopasowanie wzorców w Lisp. Będę musiał podać wzór i fakt i powiedzieć, czy pasują. Przykładem może byćJak wykonać Pattern Matching w Common Lisp

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

powinien pasować

(Morphling (hitpoints 435) (mana 260)) 

powinien również być w stanie również wykonać porównanie numeryczne jeśli liczba jest większa lub mniejsza. Tak, jakby inna mana bohatera była mniejsza niż Morphling.

+0

Doskonały opis w Paul Graham's [On Lisp] (http://ep.yimg.com/ty/cdn/paulgraham/onlisp.pdf) (Rozdział 19, p246ff) –

Odpowiedz

15

Prosta funkcja dopasowywania wzorów jest opisana w różnych książkach Lisp.

i inni.

Powyższe książki wyjaśniają bardzo dobrze wdrażanie dopasowywania wzorców w języku Lisp. Dostępne są biblioteki, na przykład cl-match, Optima i various others.

+0

Nie mogę korzystać z funkcji bibliotecznych. Muszę zrobić mój własny. – gizgok

+4

@gizgok: dobrym początkiem byłoby nauczenie się Lispa przy pomocy książki Winston/Horn. Bonus: wyjaśnia implementację dopasowywania wzorców. –

2

nie chcę do zwarcia któregokolwiek nauki trzeba zrobić do szkoły (jeśli to jest kontekst, w którym ten projekt jest wymuszone) ale możesz studiować bibliotekę cl-ppcre, http://weitz.de/cl-ppcre/, aby zobaczyć, jak doświadcza to doświadczony Lisper. Możesz pobrać źródło i przestudiować, aby zrozumieć. Dodałbym również książkę Norviga, http://norvig.com/paip.html, wspomnianą powyżej. Możesz się wiele nauczyć z tej książki.