Как сделать сопоставление с образцом в Common Lisp - PullRequest
12 голосов
/ 26 сентября 2010

Я понятия не имею, существует ли для Common Lisp функция сопоставления с образцом, тем не менее, я должен сделать свою собственную функцию. Я понятия не имею о Лиспе. Может ли кто-нибудь рассказать об изучении Lisp и, самое главное, о том, как выполнить сопоставление с образцом в Lisp. Я должен передать шаблон и факт и сказать, совпадают ли они. Примером будет

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

должно соответствовать

(Morphling (hitpoints 435) (mana 260))

он также должен иметь возможность делать числовые сравнения, если число больше или меньше. Например, если у других героев мана меньше, чем у Морфлинга.

Ответы [ 3 ]

16 голосов
/ 26 сентября 2010

Функциональность простого сопоставления с образцом объясняется в различных книгах по Лисп.

и др.

Выше книги объясняют реализацию сопоставления с образцом вЛисп очень хорошо.

Существуют библиотеки, например cl-match , Optima и различные другие .

3 голосов
/ 27 сентября 2010

Думаю, вам может понадобиться библиотека CL-Unification: http://common -lisp.net / project / cl-unification /

2 голосов
/ 28 сентября 2010

Я не хочу закорачивать любое обучение, которое вам нужно делать для школы (если это контекст, в котором требуется этот проект), но вы можете изучить библиотеку cl-ppcre, http://weitz.de/cl-ppcre/, дляпосмотрите, как это делает опытный Лиспер.Вы можете скачать исходный код и изучить его, чтобы понять.Я также поддержал бы книгу Norvig, http://norvig.com/paip.html,, упомянутую выше.Вы можете многому научиться из этой книги.

...