Possibly Pythonic Tail Call Optimization (TCO/TRE)
Steven D'Aprano
steve at pearwood.info
Thu Jul 16 14:58:54 EDT 2015
On Fri, 17 Jul 2015 03:34 am, Joonas Liik wrote:
> Now i admit that it is possible to have infinite recursion but it is
> also possiblew to have infinite loops. and we don't kill your code
> after 1000 iterations of a while loop so why should we treat recursion
> any differently?
Because a while loop which repeats to many times is annoying but harmless,
but a function that recurses too many times will blow up the stack and
cause a seg fault, possibly executing arbitrary memory as code. You want
malware and viruses to take over your system? That's how you get malware
and viruses to take over your system.
> Having a user defined maximum stack limit might be a good idea, eg if
> my stack takes up 100MB its prolly broke, but it should be my duty as
> a programmer to specify such a limit, not have it inflicted upon me
> (worse, in a manner that cannot be changed!).
You mean sys.getrecursionlimit() and sys.setrecursionlimit()?
--
Steven
More information about the Python-list
mailing list