execution model: Function vs. delayed execution

*To*: mathgroup at smc.vnet.net*Subject*: [mg121327] execution model: Function vs. delayed execution*From*: Alan <alan.isaac at gmail.com>*Date*: Sat, 10 Sep 2011 07:30:29 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*Reply-to*: comp.soft-sys.math.mathematica at googlegroups.com

Warning: I am a Mathematica newbie and not a CS type, so my vocabulary may prove clumsy. I am used to a deferred execution model of function definition. Roughly, if I can write code that would be successfully executed outside a function definition, then I can make it a function body by appropriately "wrapping" it. In Mathematica, I can evaluate the following): x = {1,1,2} x=DeleteDuplicates[x]; x (Note: the redundancy is intentional.) Next, I attempt to "wrap" this as follows Clear[x] Function[x, (x=DeleteDuplicates[x];x)][{1,1,2}] This produces an error: Set::shape: "Lists {1,1,2} and {1,2} are not the same shape." Can you help me understand the execution model that leads to this? Thanks, Alan Isaac

**Follow-Ups**:**Re: execution model: Function vs. delayed execution***From:*Leonid Shifrin <lshifr@gmail.com>