Re: switch list elements, index from inside ??

*To*: mathgroup at smc.vnet.net*Subject*: [mg2672] Re: [mg2644] switch list elements, index from inside ??*From*: Allan Hayes <hay%haystack at smc.vnet.net>*Date*: Mon, 4 Dec 1995 01:41:22 -0500

davep at newton.umsl.edu in [mg2644] switch list elements, index from inside ?? writes >I have a problem regarding the interchanging of list elements (using >the routine posted by Richard Mercer) > > t={1,2,3,4,5,6,7,8,9,10,11}; > s[list_List]:= > ReplacePart[ReplacePart[list,list[[n]],m],list[[m]],n]//. > {m->Random[Integer,{1,10}],n->Random[Integer,{1,10}]} > s[t] > >Mma complains that the part and position specification (that's m and >n) in ReplacePart is neither an integer nor a list of non zero >integers.Why doesn't Mma accept the (Random-) Integers ? The part ReplacePart[ReplacePart[list,list[[n]],m],list[[m]],n] is evaluated before m and n are replaced by the integers generated. You can use Unevaluated to prevent this: t={1,2,3,4,5,6,7,8,9,10,11}; s[list_List]:= Unevaluated[ ReplacePart[ReplacePart[list,list[[n]],m],list[[m]],n] ]//.{m->Random[Integer,{1,10}],n->Random[Integer,{1,10}]} s[t] {6, 2, 3, 4, 5, 1, 7, 8, 9, 10, 11} Allan Hayes hay at haystack.demon.co.uk