如何在commonlisp中进行模式匹配

如何在commonlisp中进行模式匹配,lisp,common-lisp,Lisp,Common Lisp,我不知道CommonLisp是否有模式匹配函数,但是我必须创建自己的函数。我对Lisp一无所知。有人能告诉我如何学习Lisp,最重要的是,如何在Lisp中进行模式匹配吗。我将不得不通过一个模式和一个事实,并说如果他们匹配。 例如 (heroes (hitpoints=hp) (mana=m)) 应该匹配 (Morphling (hitpoints 435) (mana 260)) 它还应该能够对数字的大小进行数字比较。就像另一个英雄的法力比变形少一样。简单的模式匹配功能在各种Lisp书籍中

我不知道CommonLisp是否有模式匹配函数,但是我必须创建自己的函数。我对Lisp一无所知。有人能告诉我如何学习Lisp,最重要的是,如何在Lisp中进行模式匹配吗。我将不得不通过一个模式和一个事实,并说如果他们匹配。 例如

(heroes (hitpoints=hp) (mana=m)) 
应该匹配

(Morphling (hitpoints 435) (mana 260))

它还应该能够对数字的大小进行数字比较。就像另一个英雄的法力比变形少一样。

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

等等

上面的书很好地解释了在Lisp中实现模式匹配


例如,图书馆是存在的。

我想你可能想要CL统一图书馆:

我不想打断你在学校需要做的任何学习(如果这是这个项目必须进行的背景),但是你可以研究CL ppcre图书馆,看看一个有经验的Lisper是如何做到这一点的。您可以下载源代码并研究它以了解。我也会支持上面提到的诺维格的书。你可以从那本书中学到很多东西。

我不能使用库函数。我必须自己做。@gizgok:使用Winston/Horn这本书学习Lisp是一个好的开始。奖励:它解释了模式匹配的实现。保罗·格雷厄姆(Paul Graham)的优秀描述(第19章,p246ff)