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