Unfortunately this is not possible because the signature of `put' in NATIVE_ARRAY does not match the specification required for allowing the bracket notation. It should be: put (v: T; i: INTEGER) but unfortunately is: put (i: INTEGER; v: T) . We could possibly add `slow_put' with the proper signature and have the bracket supported but that would be slightly slower since the code generation would need to store some arguments to locals to take into account the reversal of arguments. Is this still something you would like to have?