Thanks Alex! - that's the kindest "cut" :) Regards, Kashyap On Sun, Apr 21, 2019 at 10:24 AM Alexander Burger <a...@software-lab.de> wrote:
> 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 >