如何防止“收集/保持”功能扁平化其结果

问题描述

>> 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]]。似乎收集/保持会使结果变平(就块而言)。如何预防?

解决方法

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