From: Richard F. <fa...@be...> - 2014-03-23 16:48:28
|
I just tried... takewhile2(makelist(i,i,10000),lambda([x],x>0))$ takes 18 secs on my computer takewhile4(makelist(i,i,10000),lambda([x],x>0))$ takes 0.55 sec. or occasionally much less. makelist alone takes 0.12 sec... Short times like this are hard to reproduce. Another fix would be to have a destructive reverse. In lisp, nreverse. You do not need to preserve the accumulated answer backwards. Then the lisp version of cons would be much faster than maxima's which has to preserve the header... Anyway, a lisp version would be faster and maybe shorter. If it matters. Doing tail-recursion removal is probably easier in lisp because the semantics are cleaner than with Maxima. The readability of code, including tail recursion, is in the eye of the beholder. I like it too, but not exclusively. RJF |