目前无法在模式中使用带或不带变量的列表字面量。
因此,像这样
`
(match ['(1 2 3)])
['(a b c)] a)
`
会导致失败的断言。
AssertionError 无效列表语法 (a b c) in (quote (a b c))。
可以使用 :seq
和 :guard
通过以下方法解决这个问题,但编写起来相当繁琐:
`
(match ['(1 2 3)])
[(([a b c] :seq) :guard list?)] a)
`
而且它相当麻烦。
列表匹配在编写宏和编译器时会非常有用。