当前,Clojure 允许存在包含 &rest 参数的解构模式。
user=> (let [[a b & c] (range 5)] [a b c])
[0 1 (2 3 4)]
Python 允许这样做,还可以将所谓的“通配符”放在前面和中间位置(PEP 说明)
>>> a, *b, c = range(5)
>>> a
0
>>> c
4
>>> b
[1, 2, 3]
Clojure 是否考虑过类似的设计?它可以看起来像这样:
user=> (let [[a & b c] (range 5)] [a b c])
[0 (1 2 3) 4]
我认为这可以通过核心函数当前的解构方式来实现,但也许我忽略了某些细节。