News for hackers. Stuff that matters.
Re:When are two proofs essentially the same? (2007) by chongli on Tuesday October 29, 2024 @08:22PM (#41990848)
Tail call elimination is not an optimization because it changes the semantics of the program. The feature can take a program which would previously fail to terminate due to a stack overflow and cause it to terminate without error.

Perhaps TCO is better thought of as a language extension.

Re:When are two proofs essentially the same? (2007) by esrauch on Tuesday October 29, 2024 @08:48PM (#41990946)
That seems no different than any other optimization: very directly tons of optimizations would reduce stack usage which would then change a given input from a stack overflow to a successful execution. Similarly anything that reduces heap memory usage or code size would also do the same.
Re:When are two proofs essentially the same? (2007) by chongli on Tuesday October 29, 2024 @09:22PM (#41991086)
How many of those other optimizations reduce stack usage from O(n) to O(1)?
Re:When are two proofs essentially the same? (2007) by BoiledCabbage on Wednesday October 30, 2024 @05:02AM (#41993072)
That's irrelevant - your assertion was that a change that changes semantics by preventing stack overflow cannot be called an optimization. The commenter showed that is false, and gave reasons why.

Whether tail call goes from O(n) to O(1) doesn't change any of the above.