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

12

我不知道Common Lisp是否存在模式匹配函数,但是我必须自己创建函数。我对Lisp一无所知。能否给我一个学习Lisp的提示,最重要的是如何在Lisp中进行模式匹配。我需要传递一个模式和一个事实,并判断它们是否匹配。以下是一个示例:

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

应该匹配

(Morphling (hitpoints 435) (mana 260))

它还应该能够进行数字比较,以确定一个数字是更大还是更小。比如如果另一个英雄的法力值低于 Morphling。


保罗·格雷厄姆在其《On Lisp》一书(第19章,第246页及以下)中对此进行了精彩的描述。 - Evgeniy Berezovsky
3个回答

17

我不能使用库函数,我必须自己编写。 - gizgok
4
一个不错的开始是使用Winston/Horn的书学习Lisp。奖励是它解释了实现模式匹配。 - Rainer Joswig

4

3
我不想妨碍您在学校需要做的任何学习(如果这是该项目所必需的上下文),但您可以研究cl-ppcre库,http://weitz.de/cl-ppcre/,以了解经验丰富的Lisper如何处理它。您可以下载源代码并进行研究以理解它。我还推荐Norvig的书http://norvig.com/paip.html,如上所述。您可以从那本书中学到很多东西。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接