maybe Terrence read something about [a: [] ] versus [ a: copy [] ] versus [ a: make list! [] ] ? in the last case the block is copied too, means you have allways an empty list. with [a: []] the block will remember its changes on subsequent invocations. --- [EMAIL PROTECTED] wrote on 28-Aug-2000/15:20:44+12:00 > Terrence "Perl Refugee" Brannon wrote: > > I read something in the REBOL McGraw-Hill book, but would like to verify > it. > > > > Is there a difference on subsequent invocations of a function if I bind a > (local?) value using make list! 0 versus make list! [] > > > > So, now I have created 4 cases: > > > > > > make list!.....0 or [] > > the word being defined...../local to function or global to rebol > > > > If I could get an answer to all four of these cases, I would be a much > clearer on state retention between function invocations. > > With this: > make list! 999 > the number 999 suggests to Rebol how much space to allocate to the list. > > With this: > make list! [] > the "[]" suggests to Rebol that no minimum size of memory be allocated > to the list!. > > In both cases, Rebol will expand or contract the list as required to hold > the data in the list. > > If you want to make the word local to the function, then: > > MyListFunction: function [] [MyList] [ > MyList: make list! 999 > ;... > ] > > If you want to make the word global: > > MyListFunction: function [] [] [ > MyList: make list! 999 > ;... > ] > > In both of the above functions, the 'MyList word is allocated a new 'list! > each time the function MyListFunction is invoked. If you want to keep the > same list, each time the function is invoked, put: > MyList: make list! 999 > outside of MyListFunction. Better still, use a object!: > > MyList: make object! [ > MyList: make list! 999 > MyOperation: function [] [] [ > ;... > ] > ] > > Andrew Martin > ICQ: 26227169 > http://members.xoom.com/AndrewMartin/ > -><- > > Volker
