App

Trait App 

Source
pub trait App<Ia: Value>: Value<Type = Lambda<<Ia as Value>::Type, <Self::Result as Value>::Type>> {
    type Result: Value;
}

Required Associated Types§

Implementors§

Source§

impl App<False> for EqTo<False>

Source§

impl App<False> for EqTo<True>

Source§

impl App<False> for Neg

Source§

impl App<False> for OrOn<False>

Source§

impl App<False> for OrOn<True>

Source§

impl App<True> for EqTo<False>

Source§

impl App<True> for EqTo<True>

Source§

impl App<True> for Neg

Source§

impl App<Z> for EqTo<Z>

Source§

impl<A, B, Ia: Value<Type = A>, Ib: Value<Type = B>> App<(Ia, Ib)> for Snd<A, B>
where A: TypeOf<Ia> + Type, B: TypeOf<Ib> + Type,

Source§

type Result = Ib

Source§

impl<A: Type, B: Type, C: Type, F, G, Ia: Value<Type = A>, Ib: Value<Type = B>, Ic: Value<Type = C>> App<Ia> for Compose<F, G>
where F: App<Ia, Result = Ib> + Value<Type = Lambda<A, B>>, G: App<Ib, Result = Ic> + Value<Type = Lambda<B, C>>,

Source§

type Result = Ic

Source§

impl<A: Type, B: Type, F: Value<Type = Lambda<A, List<B>>> + App<Current, Result = CurrentResult>, Current: Value<Type = A>, Next: Value<Type = List<A>>, CurrentResult: Value<Type = List<B>>, NextResult: Value<Type = List<B>>, Result: Value<Type = List<B>>> App<Segment<Current, Next>> for BindOn<List<A>, F>
where BindOn<List<A>, F>: Value + App<Next, Result = NextResult>, ConcatWith<NextResult>: Value + App<CurrentResult, Result = Result>,

Source§

type Result = Result

Source§

impl<A: Type, B: Type, F: Value<Type = Lambda<A, List<B>>>> App<Empty<A>> for BindOn<List<A>, F>

Source§

impl<A: Type, B: Type, F: Value<Type = Lambda<A, Maybe<B>>> + App<Ia, Result = R>, Ia: Value<Type = A>, R: Value<Type = Maybe<B>>> App<Just<Ia>> for BindOn<Maybe<A>, F>

Source§

impl<A: Type, B: Type, F: Value<Type = Lambda<A, Maybe<B>>>> App<Nothing<A>> for BindOn<Maybe<A>, F>

Source§

impl<A: Type, B: Type, F: Value<Type = Lambda<A, B>> + App<Ia, Result = Ib>, Ia: Value<Type = A>, Ib: Value<Type = B>, La: Value<Type = List<A>>, Lb: Value<Type = List<B>>> App<Segment<Ia, La>> for MapOn<List<A>, F>
where MapOn<List<A>, F>: Value<Type = Lambda<List<A>, List<B>>> + App<La, Result = Lb>,

Source§

type Result = Segment<Ib, Lb>

Source§

impl<A: Type, B: Type, F: Value<Type = Lambda<A, B>> + App<V, Result = R>, V: Value<Type = A>, R: Value<Type = B>> App<Just<V>> for MapOn<Maybe<A>, F>

Source§

impl<A: Type, B: Type, F: Value<Type = Lambda<A, B>>> App<Empty<A>> for MapOn<List<A>, F>

Source§

impl<A: Type, B: Type, F: Value<Type = Lambda<A, B>>> App<Nothing<A>> for MapOn<Maybe<A>, F>

Source§

impl<A: Type, B: Type, Ia: Value<Type = A>, Ib: Value<Type = B>> App<(Ia, Ib)> for Fst<A, B>

Source§

type Result = Ia

Source§

impl<A: Value<Type = Nat>> App<Z> for AddOn<A>

Source§

impl<A: Value<Type = Nat>, B: Value<Type = Nat>, R: Value<Type = Nat>> App<S<B>> for AddOn<A>
where AddOn<A>: Value<Type = Lambda<Nat, Nat>> + App<B, Result = R>,

Source§

type Result = S<R>

Source§

impl<L: Value<Type = Nat>, R: Value<Type = Nat>, Eq: Value<Type = Bool>> App<S<R>> for EqTo<S<L>>
where EqTo<L>: App<R, Result = Eq>,

Source§

type Result = Eq

Source§

impl<T: Type> App<Nothing<Maybe<T>>> for Flatten<T>

Source§

impl<T: Type> App<Nothing<T>> for IsNoting<T>

Source§

impl<T: Type> App<Nothing<T>> for ToList<T>

Source§

impl<T: Type, A: Type, B: Type, Fa: Value<Type = Lambda<A, T>> + App<Pa, Result = R>, Pa: Value<Type = A>, Fb: Value<Type = Lambda<B, T>>, Pb: Value<Type = B>, R: Value<Type = T>> App<True> for LambdaBranch<Fa, Pa, Fb, Pb>

Source§

impl<T: Type, A: Type, B: Type, Fa: Value<Type = Lambda<A, T>>, Pa: Value<Type = A>, Fb: Value<Type = Lambda<B, T>> + App<Pb, Result = R>, Pb: Value<Type = B>, R: Value<Type = T>> App<False> for LambdaBranch<Fa, Pa, Fb, Pb>

Source§

impl<T: Type, F: Value<Type = Lambda<T, Bool>> + App<Current, Result = CurrentResult>, Current: Value<Type = T>, Next: Value<Type = List<T>>, NextResult: Value<Type = List<T>>, CurrentResult: Value<Type = Bool>, CurrentMaybe: Value<Type = Maybe<T>>, Listed: Value<Type = List<T>>, Result: Value<Type = List<T>>> App<Segment<Current, Next>> for FilterOn<F>
where FilterOn<F>: App<Next, Result = NextResult>, WhenMaybe<Just<Current>>: App<CurrentResult, Result = CurrentMaybe>, ToList<T>: App<CurrentMaybe, Result = Listed>, ConcatWith<Next>: App<Listed, Result = Result>,

Source§

type Result = Result

Source§

impl<T: Type, F: Value<Type = Lambda<T, Bool>>> App<Empty<T>> for FilterOn<F>

Source§

impl<T: Type, I: Value<Type = Maybe<T>>> App<Just<I>> for Flatten<T>

Source§

impl<T: Type, I: Value<Type = T>> App<Empty<T>> for ContainIn<I>

Source§

impl<T: Type, I: Value<Type = T>> App<I> for Id<T>

Source§

impl<T: Type, I: Value<Type = T>, L: Value<Type = List<T>>> App<L> for PushTo<I>

Source§

type Result = Segment<I, L>

Source§

impl<T: Type, I: Value<Type = T>, LI: Value<Type = T>, L: Value<Type = List<T>>, Eq: Value<Type = Bool>, C: Value<Type = Bool>, R: Value<Type = Bool>> App<Segment<LI, L>> for ContainIn<I>
where EqTo<I>: App<LI, Result = Eq>, ContainIn<I>: App<L, Result = C>, OrOn<Eq>: App<C, Result = R>,

Source§

impl<T: Type, L: Value<Type = List<T>>> App<Empty<T>> for ConcatWith<L>

Source§

impl<T: Type, L: Value<Type = List<T>>, I: Value<Type = T>> App<Segment<I, Empty<T>>> for ConcatWith<L>

Source§

type Result = Segment<I, L>

Source§

impl<T: Type, L: Value<Type = List<T>>, I: Value<Type = T>, NextI: Value<Type = T>, Next: Value<Type = List<T>>, NextResult: Value<Type = List<T>>> App<Segment<I, Segment<NextI, Next>>> for ConcatWith<L>
where ConcatWith<L>: App<Segment<NextI, Next>, Result = NextResult>,

Source§

type Result = Segment<I, NextResult>

Source§

impl<T: Type, V: Value<Type = T>> App<False> for WhenMaybe<V>

Source§

impl<T: Type, V: Value<Type = T>> App<False> for WhenMaybeF<V>

Source§

impl<T: Type, V: Value<Type = T>> App<Just<V>> for IsNoting<T>

Source§

impl<T: Type, V: Value<Type = T>> App<Just<V>> for ToList<T>

Source§

type Result = <Pure<List<T>> as App<V>>::Result

Source§

impl<T: Type, V: Value<Type = T>> App<True> for WhenMaybe<V>

Source§

impl<T: Type, V: Value<Type = T>> App<True> for WhenMaybeF<V>

Source§

impl<T: Type, V: Value<Type = T>> App<V> for Pure<List<T>>

Source§

impl<T: Type, V: Value<Type = T>> App<V> for Pure<Maybe<T>>

Source§

impl<T: Value<Type = Bool>> App<True> for OrOn<T>

Source§

impl<T: Value<Type = Nat>> App<S<T>> for EqTo<Z>

Source§

impl<T: Value<Type = Nat>> App<Z> for EqTo<S<T>>