如何防止 "collect/keep" 函数使结果变平

How to prevent "collect/keep" function from flatting its result

>> a: [[1 2] "a" a [3 3]]
== [[1 2] "a" a [3 3]]
>> collect [foreach x a [if block? x [keep x]]]
== [1 2 3 3]

但我想要的是[[1 2] [3 3]]。似乎 collect/keep 会使结果变平(就块而言)。如何预防?

使用keep/only。仅供参考,keepappend 具有几乎相同的语义(除了一些改进),带有一个 collect 内部提供的隐式块:有关详细信息,请参阅 ?? collect