Hi Dean, > I'm sure I can only return multiple values from a function as a list. > I can assign those values to multiple symbols in the calling function like > this... > > (setq L (1 100 1000)) > > (setq A (get L 1) B (get L 2) C (get L 3))
Right. > but wonder if there's a shorter way. For the elements near the beginning of a nested List structure there are direct access functions cXXXXr, i.e. car, cdr, cadr, cdar, cddr ... up until 4 'a's or 'd's. So the 4th element of a list is (cadddr L), and the above becomes (setq A (car L) B (cadr L) C (caddr L)) Another possibility is to use de "destructuring bind" feature of 'let' (only available in pil64). It is the shortest: (let ((A B C) L) ... So if you get this list from a function 'foo', you would do (let ((A B C) (foo)) ... - Alex -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe