This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
///! Proposal for guaranteed Tail-Drop elimination for functions that do not return values. | |
///! | |
///! We revisit the `become` keyword limiting it to functions that do not return values | |
///! Given this constraint, it becomes much easier to implement. | |
///! A programmer can always supply the place to return to with a continuation anyways quite trivialy. | |
/// This is why it must be done at a language level. | |
/// The programmer cannot do this themselves or they would have a stack overflow. | |
/// If the programmer did try to do it themselves, it would require a very complex, type unsafe way to do it. | |
/// All parts can be guaranteed to be sound statically |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use std::marker::PhantomData; | |
enum Ast{}; | |
enum Eval{}; | |
trait Mode {} | |
impl Mode for Ast {} | |
impl Mode for Eval {} |
OlderNewer