Hi Alex, >> I would expect: >> >> : (make (link 1) (chain 2)) >> -> (1 . 2)
> In this respect, 'chain' is analogous, it simply processes the cell > arguments, and does not preserve any CDRs, as it cannot not know if > later more elements will be added with 'link' or 'chain'. Yes, I think the behaviour above is quite simple, natural, logical, practical and efficient:-D >> I guess this is not currently achievable using 'make'? > > The following would do that > > : (make (link 1) (conc (made) 2)) > -> (1 . 2) > > but is rather inefficient because it traverses the whole (made) list to > concatenate the '2'. I see. Thanks. I guess that destructively messing with the make environment in general breaks it, if it is not the last operation on it: : (make (link 1) (conc (made) 2) (chain (conc 3 4))) -> (1 . 2) > Anyway, this seems to be a useful feature. It basically just needs the > exchange of two lines in 'doChain()' in "src/subr.c": > > do { > if (isCell(y = EVAL(car(x)))) { > *Env.make = y; > do > > -> > > do { > *Env.make = y = EVAL(car(x)); > if (isCell(y)) { > do > > > Should I keep that change? Yes please;-) Thank you, Tomas -- UNSUBSCRIBE: mailto:picol...@software-lab.de?subject=unsubscribe