Re: Telling Mathematica that a symbol is going to be a List?
- To: mathgroup at smc.vnet.net
- Subject: [mg50823] Re: [mg50817] Telling Mathematica that a symbol is going to be a List?
- From: Andrzej Kozlowski <andrzej at akikoz.net>
- Date: Wed, 22 Sep 2004 04:52:01 -0400 (EDT)
- References: <200409220411.AAA18738@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On 22 Sep 2004, at 13:11, AES/newspost wrote: > *This message was transferred with a trial version of CommuniGate(tm) > Pro* > I want to define a function containing parameters that are going to be > elements in a list, e.g. something like > > m := { { d[[1]], 0, 0}, {0, d[[2]], 0}, {0, 0, d[[3]]} > > but not define the list of values of d until later (and not put the > parameters in as explicit arguments of m just to keep the appearance > less cluttered and typing easier). > > If I then give an input line > > m /. {d -> {d1, d2, d3} } // MatrixForm > > I get "Part::partd" errors -- but the matrix then displays correctly. > > I can of course just Off[] the errors -- but is there a better way. > It depends on what you mean by "better". I don't think there is a way which does not require more typing, but you can avoid pre-mature evaluation attempt in several ways, e.g. by having HoldForm or Hold in your definition of m, and using Release hold after replacement: m :=HoldForm[ { { d[[1]], 0, 0}, {0, d[[2]], 0}, {0, 0, d[[3]]}}] ReleaseHold[m/. {d -> {d1, d2, d3} } ]// MatrixForm or by replacing the outer list by some undefined function wiht the HoldAll attribute: SetAttributes[L,HoldAll] m :=L[ { d[[1]], 0, 0}, {0, d[[2]], 0}, {0, 0, d[[3]]}] m/. {d -> {d1, d2, d3} }/.L->List and so on. But I suspect that there may be a better way to achieve what you are ultimately hoping to do without going into all this trouble. Andrzej Kozlowski Chiba, Japan http://www.akikoz.net/~andrzej/ http://www.mimuw.edu.pl/~akoz/
- References:
- Telling Mathematica that a symbol is going to be a List?
- From: AES/newspost <siegman@stanford.edu>
- Telling Mathematica that a symbol is going to be a List?