Insulating data from code

*To*: mathgroup at smc.vnet.net*Subject*: [mg66493] Insulating data from code*From*: "Ray Koopman" <koopman at sfu.ca>*Date*: Wed, 17 May 2006 03:29:22 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

>From time to time I've wanted to partition the first level of one list, say A, the same way that another list, say B, is partitioned. One way to do this is copyPartition[A_List, B_List] /; Length@A >= Length@Flatten@B := Module[{i = 0}, Map[A[[++i]]&,B,{-1}]] But all the methods I've thought of have a pointer that functions something like i in the above code. I'd like to eliminate the pointer, because in the unlikely event that A contains an unevaluated symbol that is the same as the name of the pointer with $ appended -- e.g., i$, if the pointer is i -- then in the returned list that symbol will have a numeric value assigned to it. Unique[i] doesn't help. The only solution I see is the probabilistic one of giving the pointer a strange (random?) name that hopefully would be very unlikely to show up as data. But that would be giving up. Does anyone have any ideas?