Hi Lindsay,

> (de hexSpigot NIL
>    (job '((N))
> ...
> : (do 32 (prin (hexSpigot)))
> ...
> 0123456789ABCDEF0123456789ABCDEF-> "F"
> ... 
> : (pp 'hexSpigot)
> (de hexSpigot NIL
>    (job
>       '((N 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12
> 11 10 9 8 7 6 5 4 3 2 1 0 ) )
> ...
> The job vars are being modified and the list N is growing.. using ever
> greater amounts of memory. If I want to reset the spigot, or even clone it
> to have more than one, how would I do that?

The simplest is to use a global:

   (setq *HexSpigot '((N)))

   (de hexSpigot NIL
      (job *HexSpigot
         ...

and later just do the 'setq' again.


BTW, for an expression like

   (ifn N (setq N (0)))

there is 'default'

   (default N (0))

So the above could be made a bit easier:

   (off *HexSpigot)

   (de hexSpigot NIL
      (job (default *HexSpigot '((N . (0))))
         (prog1
            (hex (% (car N) 16))
            (setq N (cons (+ 1 (car N)) N)) ) ) )

   (do 32 (prin (hexSpigot)))
   (off *HexSpigot)
   (do 32 (prin (hexSpigot)))

i.e. just call 'off' to reset it :)

♪♫ Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to