Volker,
> (%i2) block( [ibase:16], a );
> (%o2) a
> (%i3) block( ibase:16, a );
> (%o3) a
> (%i4) a;
> (%o4) 10
>
> An assignment to ibase in a block doesn't have any consequence inside the block itself.
> Does it make sense then, if this only works in top level?
That is to be expected. Maxima parses the entire input expression
before evaluating it. So in block([ibase : 16], a) , a is read with the
value of ibase *before* 16 is assigned.
> Maybe one could think about implementing bytestrings.
Not sure what you mean here. Maybe you can expand on this point.
Robert