Get Parts of Expression by Position list
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg390] Get Parts of Expression by Position list
- From: Xah Y Lee <xyl10060 at fhda.edu>
- Date: Sun, 8 Jan 1995 23:35:23 -0800 (PST)
Dearly beloved MathGroupers, Dana_Scott at POP.CS.CMU.EDU raised an interesting question when he mentioned a possible design fault with mma syntax of Part[] and Delete[]. ([mg374]) The question I thought of from his message is: How to write a function that emulate Part[] but uses the syntax of Delete[]? I had some partial success, but still have some problems. Here's my "progress". -- (*here I define myTree *) myTree = Insert[Range[20],{{a,b,c}, Range[100,105]}, 3]; -- (* here are the positions in myList that I am interested to get *) myParts = {{3,2,3},{3,1,2},5}; -- (* this gives me the first one *) myTree[[3]][[2]][[3]] -- (* or we can do*) Fold[ Part[#1,#2]&, myTree, {3,2,3}] -- (* Now we try to get them all at once *) Fold[ Part[#1,#2]&, myTree, #]& /@ myParts (*this doesn't work*) -- Why doesn't the last one work? Is there a better way to do this? Also, I'd be interested to know from WRI why they decided for Delete[] and Part[] to have different syntax. It seems to me functions like Part[] or Take[] would be better off using the syntax returned by Position[] like in Delete[]. There once was a brainy baboon | Xah Lee Who always breathed down a bassoon,| xyl10060 at tiptoe.fhda.edu For he said, "It appears | That in billion of years | I shall certainly hit on a tune." <-- Author not known to me.