tcrts 0.1.0

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

pub trait Reverse {
    type Output;
}

pub trait ReverseHelper<Acc> {
    type Output;
}

impl<L: ReverseHelper<Nil>> Reverse for L {
    type Output = <L as ReverseHelper<Nil>>::Output;
}

impl<Acc> ReverseHelper<Acc> for Nil {
    type Output = Acc;
}

impl<H, T, Acc> ReverseHelper<Acc> for Cons<H, T>
where
    T: ReverseHelper<Cons<H, Acc>>,
{
    type Output = <T as ReverseHelper<Cons<H, Acc>>>::Output;
}