There are some invisible operators in Mathematica (\[ImplicitPlus]
,\[InvisibleTimes]
,\[InvisibleComma]
,\[InvisibleApplication]
). How can I make my own that would not interfere with built-in functions (Plus
,Times
,Sequence
,Apply
)? Is there some invisible character like those different kinds of spaces (\[RawSpace]
,\[ThinSpace]
,\[VeryThinSpace]
, etc.) that won't be interpreted as multiplication, so that I can define my own patterns and behaviour with it?
EDIT: OK, I think this is it:
TemplateBox[{}, "op",
InterpretationFunction :> (RowBox@{"~op~"} &),
DisplayFunction :> (RowBox@{"\[InvisibleSpace]"} &)];
SetOptions[EvaluationNotebook[], InputAliases -> {"op" -> %}]
SetAttributes[op, Flat];
Now if I type 1[ESC]op[ESC]2[ESC]op[ESC]3
it will be interpreted as 1~op~2~op~3
which means op[1,2,3]
if op
has Flat
attribute, but will be displayed as 123
.
I wonder why nobody came up with it, what all the gurus doing?
Whatever, now I can finally create pretty EDSLs in Mathematica :D
\[InvisibleBug]
! $\endgroup$ – Dr. belisarius Feb 18 '14 at 5:08