You can assign to them, but it is as useless as assigning to locals of a function. Probably should just be disallowed. When combined with $() [which is actually just an arg] it is especially confusing. 2: What do you think about this code ? Does it compile ? What will be the result ? void create() { int data; string *tmp=({"a","b","c"}); data=0; map_array(tmp,(: $(data)+=1 :) ); write(""+data); } If the result is not 3, where goes that three addition ?