Пара моментов:
Вам не нужно двойное двоеточие для глобального назначения, когда вы выполняете добавление на месте (он же a,:b
, а неa::a,b
).Сингл будет работать в этом случае, так как добавление на месте работает в глобальном контексте.
Вы не принимаете во внимание тот факт, что добавление на месте очень эффективно при использовании памяти, даже если оно не "функционально" и использует глобальный контекст.Например:
q)\ts t:([]col1:10000000?100j)
110 134218192
q)\ts a:{x,select from y}/[t;2 cut ([]col1:til 6)]
74 268436720
q)\ts {t,:x} each 2 cut ([]col1:til 6)
0 1424
q)a~t
1b
Метод итерации с использованием over (/) и обхода глобальных переменных создает копию таблицы, удваивая использование памяти.Приложение в месте использует очень мало памяти для того же результата.
Таким образом, в конечном счете, есть некоторые ситуации, в которых наличие глобального является достойным компромиссом, зависит от ситуации.