Re: MakeExpression problem
- To: mathgroup at smc.vnet.net
- Subject: [mg77110] Re: [mg77095] MakeExpression problem
- From: "Chris Chiasson" <chris at chiasson.name>
- Date: Mon, 4 Jun 2007 03:45:02 -0400 (EDT)
- References: <200706031013.GAA02923@smc.vnet.net>
Warning: I do not fully understand how operators are defined in Mathematica, however I have some idea. AFAIK, a MakeExpression rule is useless in a non-notebook environment because the commands are (then) not represented as boxes. You do not have to catch the DoubleLongRightArrow operator at the "parsing" stage. Once a==>b is read into Mathematica, it becomes the following expression (AFAIK): DoubleLongRightArrow[a,b] You can easily define a DownValue for DoubleLongRightArrow to do what you want. This method should work for both notebooks and package files. On 6/3/07, Hannes Kessler <HannesKessler at hushmail.com> wrote: > Hello, > > here is a small package defining and using a generic MakeExpression > interpretation rule: > > BeginPackage["DoubleLongRightArrow`"]; > {test1,test2,a,b,interpretation}; > Begin["`Private`"]; > MakeExpression[RowBox[{x_,"\[DoubleLongRightArrow]",y_}],form_]:= > MakeExpression[RowBox[{"interpretation"}],form]; > test1=a\[DoubleLongRightArrow]b; > (*The following assigment forces an interpretation by additional > application of //ToBoxes//ToExpression*) > test2=a\[DoubleLongRightArrow]b//ToBoxes//ToExpression; > End[]; > EndPackage[]; > > Here is a small notebook which calls the package. > The typesetted \[DoubleLongRightArrow] looks in the notebook like ==>. > > Needs["DoubleLongRightArrow`"]; > (*The following expression is correctly interpreted in the notebook:*) > In[] a==>b > Out[] interpretation > (*The expression read in the package is not interpreted:*) > In[] test1 > Out[] a==>b > (*Only the second expression converted first to boxes and then again > to an expression is interpreted correctly*) > In[] test2 > Out[] interpretation > > My question is, how can I define an interpretation rule in a package > and use it in the same or other packages, not only in notebooks? > > Regards, > Hannes Kessler > > > -- http://chris.chiasson.name/
- References:
- MakeExpression problem
- From: Hannes Kessler <HannesKessler@hushmail.com>
- MakeExpression problem