如何在Common Lisp中进行模式匹配

时间:2010-09-26 16:07:41

标签: lisp common-lisp

我不知道Common Lisp是否存在模式匹配函数,但我必须自己创建函数。我不知道Lisp。有人可以单独学习Lisp,最重要的是,如何在Lisp中进行模式匹配。我将不得不传递一个模式和一个事实,并说它们是否匹配。 一个例子是

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

应匹配

(Morphling (hitpoints 435) (mana 260))

它还应该能够进行数字比较,如果数字更大或更小。就像另一个英雄法术力不那么变形。

3 个答案:

答案 0 :(得分:16)

简单的模式匹配功能在各种Lisp书中有解释。

和其他人。

以上书籍解释了在Lisp中实现模式匹配。

存在库,例如cl-matchOptimavarious others

答案 1 :(得分:3)

我想你可能想要CL-Unification库:http://common-lisp.net/project/cl-unification/

答案 2 :(得分:2)

我不想将您需要为学校做的任何学习短路(如果这是需要该项目的背景),但您可以研究cl-ppcre库,http://weitz.de/cl-ppcre/,看看经验丰富的Lisper是如何做到的。您可以下载源代码并进行研究以了解它。我还要提到Norvig的书,http://norvig.com/paip.html,如上所述。你可以从那本书中学到很多东西。