REBOL [ Title: "Lists" Author: "Aldo Calpini" Date: 03-Jul-2001 File: %lists.r ] SIZE: 10000 ITER: to-integer to-string system/script/args ITER: either ITER < 1 [ 1 ] [ ITER ] test_lists: func [ /local A Li1 Li2 Li3 ] [ comment [ create a list of integers (Li1) from 1 to SIZE ] Li1: copy [] for A 1 SIZE 1 [ insert tail Li1 A ] comment[ copy the list to Li2 (not by individual items) ] Li2: copy Li1 comment [ remove each individual item from left side of Li2 and append to right side of Li3 (preserving order) ] Li3: copy [] Li2: head Li2 while[not tail? Li2] [ insert tail Li3 Li2/1 remove Li2 ] comment [ Li2 must now be empty remove each individual item from right side of Li3 and append to right side of Li2 (reversing list) ] Li3: head Li3 while[not tail? Li3] [ last Li3 insert Li2 Li3/1 remove Li3 ] comment [ Li3 must now be empty reverse Li1 in place ] reverse Li1 comment [ check that first item is now SIZE ] if Li1/1 <> SIZE [ return -1 ] Li1: head Li1 Li2: head Li2 while [not tail? Li1] [ if Li1/1 <> Li2/1 [ return 0 ] Li1: next Li1 Li2: next Li2 ] Li1: head Li1 return length? Li1 ] result: 0 while [ ITER > 0 ] [ result: test_lists ITER: ITER - 1 ] write %output.rebol rejoin [ result ]