码迷,mamicode.com
首页 > 其他好文 > 详细

从两个list中挑出匹配部分

时间:2014-09-09 13:17:38      阅读:492      评论:0      收藏:0      [点我收藏+]

标签:newlisp

match函数很特别, 就是用两个list比较的时候,后一个list中如果有符合前一个list的通配符的描述,则挑出来,作为独立的list返回。

简单的例子如下:

> (match ‘(a ? c) ‘(a b c))
(b)

注意通配符只有三种: * ? 和 +

* 表示任何多个元素

? 表示可以有元素,也可以没有

+ 表示至少有一个元素

(match ‘(a ? c) ‘(a (x y z) c))  → ((x y z))

注意,如果match函数的地一个参数list中没有通配符,则返回nil

> (match ‘(a d c) ‘(a b c))
nil

下面例子较复杂, 表示了通配符可以在list内部的list元素中使用

> (match ‘(a (b c ?) x y z) ‘(a (b c d) x y z))
(d)



从两个list中挑出匹配部分

标签:newlisp

原文地址:http://blog.csdn.net/csfreebird/article/details/39136995

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!