3 ms·
> outright denial of any attempt at TCO because "Guido doesn't like recursion". No, don’t ignore problems of TCO by saying “guys don’t like functional programi
by kbumsik 8y ago
> outright denial of any attempt at TCO because "Guido doesn't like recursion".
No, don’t ignore problems of TCO by saying “guys don’t like functional programimg”. Guido cleary states why he doesn’t like it: [1]. Even though TCO is one of the ES6 standard, TCO also is largely denied by JS implementors (Firefox, Chrome, and Edge devs) because of the similar reasons. As a result, Safari is the only browser that supports TCO. [2][3] And Rust team is not eager to introduce TCO [4].
[1]: http://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html http://neopythonic.blogspot.com/2009/04/tail-recursion-elimi...
[2]: https://www.chromestatus.com/feature/5516876633341952 https://www.chromestatus.com/feature/5516876633341952
[3]: https://github.com/kangax/compat-table/issues/819 https://github.com/kangax/compat-table/issues/819
[4]: https://github.com/rust-lang/rfcs/pull/1888 https://github.com/rust-lang/rfcs/pull/1888
- steveklabnik 8y agoIt’s not that we’re not eager, it’s that it’s harder in a systems language and historically there’s been limitations in LLVM. We will sometimes optimize for TCO, that issue is that we can’t guarantee it just yet.