tcrts 0.1.0

Turing complete rust type system
Documentation
use super::*;

pub trait Pop {
    /// New list
    type Output;

    /// The popped item
    type Item;
}

// pop [I] = []
impl<I> Pop for Cons<I, Nil> {
    type Output = Nil;
    type Item = I;
}

impl<H, T: Pop> Pop for Cons<H, T> {
    type Output = Cons<H, <T as Pop>::Output>;
    type Item = <T as Pop>::Item;
}