Здравствуйте, вопрос по стилю программирования в Математике. 
Задача: Посчитать "гистограммную характеристику" неких свойств объекта.
Объект состоит из множества точек плоскости, с целочисельными координатами. 
Позиция в гистограмме и интегральная характеристика, обновляемая в этой позиции формализуются отдельно. 
Моё решение: 
Код:
(* Вычисление позиции в гистограмме, обновление для одной точки *) 
PointUpdateResult[res_, x_, y_, n_] := Block[ {offset = MyOffset[x, y, n] (* позиция в гистограмме *)},  
   ++res[[offset,1]]; (* количество *) 
    res[[offset,2]] += Sqrt[x^2 + y^2]; (* "интегральное свойство" *) 
]; 
SetAttributes[PointUpdateResult, {HoldFirst}];  
 
(* итерация по точкам, накопление необходимого свойства *) 
UpdateResult[res, x_, y_, w_, Order_] := For[cr=0, cr<Order, ++cr; 
   PointUpdateResult[res, x+cr, y, Order] ];
SetAttributes[UpdateResult, {HoldFirst}]; 
 
(* функция, работающая с самим объектом *) 
SectorFeatures[x_, Order_]:= Block[ { params=Runs[x], second_params = Mec[x], res=Table[{0,0},Order] (* "выделяем память" под гистограмму *)}, 
   UpdateResult[res,second_params,Order,#] & /@ params; 
   res // MatrixForm 
];
 Таким образом, пришлось организовывать "передачу параметра по ссылке" для организации циклического накопления нужного мне свойства. 
Возможно существуют другие приёмы итерирования, позволяющие решить задачу проще?
Или же какие-то пропущенные мной способы организации map-подобного контейнера (из C++, хранилище пар <уникальный_ключ, значение>)?