RE: Automatic Display in MatrixForm
- To: mathgroup at smc.vnet.net
- Subject: [mg19561] RE: Automatic Display in MatrixForm
- From: Colin Rose <colin at tri.org.au>
- Date: Wed, 1 Sep 1999 23:06:59 -0400
- References: <E1168E31432DD211AF990000F806EFD801FB51ED@nems04.nawcad.navy.mil>
- Sender: owner-wri-mathgroup at wolfram.com
CR pondered:
>If MyFunc[x] returns a matrix, which we want formatted
>as a List (and not in "Fancy Matrix" form), how can we switch
>it off LOCALLY for this function's output only,
>and without converting back to InputForm ?
and Ted Ersek suggested:
>In[1]:=
>$Pre:=(HiddenSymbols`UseMatrixForm=True;#&)
>
>In[2]:=
>MakeBoxes[m_?(Function[t,MatrixQ[Unevaluated[t]] &&
> Flatten[t//.{_Rule->Sequence[],_RuleDelayed->Sequence[]}]=!={},
> HoldAll ]), StandardForm]/;HiddenSymbols`UseMatrixForm :=
> RowBox[{"(", GridBox[Map[Function[t,MakeBoxes[t,StandardForm],HoldAll],
> Unevaluated[m],{2}]],")"}]
>
>In[3]:=
>MyFunc[x_]:=(HiddenSymbols`UseMatrixForm=False;3 x)
>
>In[4]:=
>m={{1,2,1},{1,0,1},{0,0,1}}
>MyFunc[m]
>m.m
>
>
>Out[4]=
> 1 2 1
> 1 0 1
> 0 0 1
>
>
>Out[5]=
> {{3,6,3},{3,0,3},{0,0,3}}
>
>
>Out[6]=
> 3 2 4
> 1 2 2
> 0 0 1
>--------------------
>
>Isn't that delicious.
Indidly :) It's very clever. But it seems a little invasive: the $Pre
forces an extra evaluation on each and every Input that is undertaken
keeping on setting HiddenSymbols`UseMatrixForm=True.
Is there not a less invasive way, say:
MyFunc[x] // ListForm
where the addition of ListForm produces the output as
a List, rather than a fancy MatrixForm ?
Cheers and thanks
Colin
Colin Rose
tr(I) - Theoretical Research Institute
__________________________________________
colin at tri.org.au http://www.tri.org.au/