MakeExpression on a list
- To: mathgroup at smc.vnet.net
- Subject: [mg132141] MakeExpression on a list
- From: Yi Wang <tririverwangyi at gmail.com>
- Date: Tue, 24 Dec 2013 02:18:29 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
Dear all, I was trying to use MakeExpression to translate Subscript[f, \[FilledSmallSquare]] into f[x,y,z,t]. Currently, I can do it with X={x,y,z,t} MakeExpression[SubscriptBox[f_,"\[FilledSmallSquare]"],form_] := MakeExpression[RowBox[ {f, "[",Sequence@@Riffle[Map[ToBoxes[#,form]&,X],","],"]"}],form] However, I was wondering if there are simpler ways (using Riffle to make a sequence of strings seems stupid). Especially, why the following doesn't work: MakeExpression[SubscriptBox[f_,"\[FilledSmallSquare]"],form_] := MakeExpression[f,form][x,y,z,t] Thank you very much in advance! Note: I know I could use the Notation package, or directly write MakeExpression[SubscriptBox[f_,"\[FilledSmallSquare]"],form_] := MakeExpression[RowBox[{f, "[x,y,z,t]"}],form] However, I would like to be able to change coordinate, say X={x,y,z,t} into X={r, theta, phi, t} and use the same code to parse input. Thus I don't want to hard code "[x,y,z,t]". Also the Notation package doesn't seem to provide such flexibility. Merry Christmas and happy new year! Yi