Hi Kashyap,

> (de batch (l s) # l: input list, s = batch size
>  (let ts (* -1 s)
> (make
> (while (< 0 (length l))
> (link (head s l))
> (setq l (tail ts l))))))
> 
> I'd love to get some feedback on this.

First I would suggest to stick with the convention of upper case local
variables, to avoid severe foot damage ;)

   (de batch (L S)  # L: input list, S = batch size
      (let Ts (* -1 S)
         (make
            (while (< 0 (length L))
               (link (head S L))
               (setq L (tail Ts L)) ) ) ) )

Then a few improvements:

   — Instead of (* -1 S) better use the unary minus (- S). It avoids a
     multiplication and just sets a sign bit
   — (while (< 0 (length L)) ..) is expensive, as it counts the length of the
     list each time. Better use a simple (while L ..)
   — 'head' and 'tail' can be replaced by 'cut'


With that, we get:

   (de batch (L S)  # L: input list, S = batch size
      (make
         (while L
            (link (cut S 'L)) ) ) )

☺/ A!ex

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

Reply via email to