Re: Replace Heads
- To: mathgroup at smc.vnet.net
- Subject: [mg5231] Re: Replace Heads
- From: Xah Lee <xah at best.com>
- Date: Fri, 15 Nov 1996 03:33:49 -0500
- Organization: Best Internet Communications
- Sender: owner-wri-mathgroup at wolfram.com
This is a summary on solutions to a programming problem "Replace Heads".
Problem:
Given an abritrary expression, how to replace all heads to List?
Example,
Clear[a,b,c,d,e,f,g,expr]
f := ({a,b,c,d,e,g}[[Random[Integer, {1,6}] ]])
expr = Array[ Hold at f, {3,2,3},1, Hold at f]//ReleaseHold
Map[ {(Sequence@@#)}&, expr, {0,-2}]
Solutions:
The following people
David B. Wagner" <dbwagner at princon.com>
Allan Hayes <hay at haystack>
Robert Villegas <villegas at wolfram.com>
Wouter <vdmcc at vandemoortele.be>
fransm at win.tue.nl (Frans Martens)
Gave the simple solution:
Apply[ List, expr, {0,-2}]
---
Yokoi Takahisa <yokoi at skk.is.tohoku.ac.jp>
expr //. (head:_) [args___] :> List[args] /; (List =!= head)
jpk at apex.mpe.FTA-Berlin.de (Jens-Peer Kuska)
expr //. any_?(List=!=# &)[args___] :> List[args]
Robby Villegas took the problem one step futher and considered cases
where expr contain heads that are not atoms, or whether you want your
expr remain unevaluated. Robby Villegas rank among the tops who
understand Mathematica language in DEPTH. Read his messages.
Xah
xah at best.com; 74631.731 at compuserve.com
http://www.best.com/~xah/SpecialPlaneCurves_dir/specialPlaneCurves.html
Mountain View, CA, USA