I 开发者_开发知识库have no idea if there exists a pattern matching function for Common Lisp, nevertheless I have to make my own function. I have no idea about Lisp. Can somebody give heads-up on learning Lisp and most importantly, how to go about doing pattern matching in Lisp. I will have to pass a pattern and a fact and say if they match. An example would be
(heroes (hitpoints=hp) (mana=m))
should match
(Morphling (hitpoints 435) (mana 260))
it should also be able to also do numeric comparisons of if a number is greater or lesser. Like if another heroes mana is less that Morphling.
Simple pattern matching functionality is explained in various Lisp books.
Lisp, 3rd edition, Winston/Horn
Paradigms of Artificial Intelligence Programming, Case Studies in Common Lisp, Peter Norvig
and others.
Above books explain implementing pattern matching in Lisp very well.
Libraries exist, for example trivia, cl-match, and various others.
I think you may want the CL-Unification library: http://common-lisp.net/project/cl-unification/
I don't want to short circuit any learning you need to do for school (if that is the context in which this project is necessitated), but you could study the cl-ppcre library, http://weitz.de/cl-ppcre/, to see how an experienced Lisper does it. You could download the source and study it to understand. I would also second the book by Norvig, http://norvig.com/paip.html, mentioned above. You can learn so much from that book.
精彩评论