Hi,

Working in CLM with a .clm file, getting confused with lisp, and I was hoping I 
could get some help from lisp experts here.

I'm confused why collecting into a global list is not available from the second 
loop, in ex. 1.  I'm wondering if I'm not understanding something about scope.  
Should the loops from ex. 1 be wrapped with something else like a "let" 
statement? 

I can access the global list by defining a function in ex. 2, but curious where 
I'm going wrong in ex. 1?

ex. 1

(defvar mylist '(0.5  100.0  200.25  4000.0  1.0  0.33))

(defvar *test* '(nil))

(loop
   for i from 0 to 10  by 1
   for xx in mylist collect (random-element mylist) into *test*
   finally (return *test*))
)

(loop
   for i from 0 to 10 by 1
   for yy in *test*  ;the randomized list above does not seem available as 
global here
   do
     (format t " ~A" yy)
 )

------------------
ex. 2

(defvar mylist '(0.5  100.0  200.25  4000.0  1.0  0.33))

(defvar *test* '(nil))

(defun myfunc (somelist)
(loop
   for i from 0 to 10  by 1
   for xx in somelist collect (random-element somelist) into *test*
   finally (return *test*))
) 

(loop
   for i from 0 to 10 by 1
     for yy in (myfunc mylist)
   do
     (format t " ~A" yy)
 )
                                          
_______________________________________________
Cmdist mailing list
Cmdist@ccrma.stanford.edu
http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist

Reply via email to