On Mon, Nov 4, 2024 at 7:07 PM Sven Schreiber
<sven.schreiber(a)fu-berlin.de> wrote:
Am 05.11.2024 um 00:38 schrieb Sven Schreiber:
> <hansl>
> matrix m = {0.5}
> eval typename(m) # matrix
> b = _(hu=m)
> eval typename(b.hu) # scalar
> </hansl>
>
> So the mere copy of the object changes its type here. (Also happens
> outside of a bundle, but there you can force the type more easily.)
OK, so the only way I'm seeing to force and preserve the matrix type is
via a pre-created bundle and then a separate copy, and then even without
explicit type declarations:
<hansl>
clear
bundle B
m = {0.5}
B.m2 = m
eval typename(B.m2) # matrix
</hansl>
Hmm, the fact that we don't auto-convert a 1x1 matrix to scalar in
your second case, but we do when the matrix figures as an argument to
defbundle() / _() seems like a nasty inconsistency. In git I've
cancelled that conversion. I think this should be "safer", in that
there are probably more contexts where a scalar can't do the job of a
matrix than vice versa (even though we've tried to minimize such
discrepancies). But we need to watch out for any unwanted side
effects.
Allin