Trait FunCall

Source
pub trait FunCall<Args>: Call<Conv = Func> {
    type Result;
}
Expand description

A function whose arguments are pre-evaluated

Note that it is acceptable to arbitrarily constrain this impl, and also to provide multiple impls for the same type, as long as they do not overlap.

Args is an hlist of all the arguments passed to the function.

Required Associated Types§

Implementors§

Source§

impl FunCall<HCons<HNil, HCons<HNil, HNil>>> for DifferP

Source§

impl FunCall<HCons<B0, HNil>> for Not

Source§

impl FunCall<HCons<B1, HNil>> for Not

Source§

impl<'a, Func, L: List> FunCall<HCons<Func, HCons<&'a L, HNil>>> for MapRef
where HCons<If, HCons<HCons<EmptyP, HCons<Quote<L>, HNil>>, HCons<HNil, HCons<HCons<Cons, HCons<HCons<Func, HCons<Quote<&'a L::Head>, HNil>>, HCons<HCons<MapRef, HCons<Func, HCons<Quote<&'a L::Tail>, HNil>>>, HNil>>>, HNil>>>>: Eval,

Source§

type Result = <HCons<If, HCons<HCons<EmptyP, HCons<Quote<L>, HNil>>, HCons<HNil, HCons<HCons<Cons, HCons<HCons<Func, HCons<Quote<&'a <L as List>::Head>, HNil>>, HCons<HCons<MapRef, HCons<Func, HCons<Quote<&'a <L as List>::Tail>, HNil>>>, HNil>>>, HNil>>>> as Eval>::Result

Source§

impl<A, B> FunCall<HCons<PhantomData<A>, HCons<B, HNil>>> for Intersect

Source§

impl<A, B> FunCall<HCons<PhantomData<A>, HCons<B, HNil>>> for Remove

Source§

impl<A, B> FunCall<HCons<A, HCons<B, HNil>>> for SubsetP

Source§

impl<A, B> FunCall<HCons<A, HCons<B, HNil>>> for SupersetP

Source§

impl<A: List, B: List> FunCall<HCons<A, HCons<B, HNil>>> for Concat

Source§

impl<A: List, B: List> FunCall<HCons<A, HCons<B, HNil>>> for Union

Source§

impl<Arg> FunCall<HCons<Arg, HNil>> for Quote
where HCons<Ret, HCons<Quote<Quote<Arg>>, HNil>>: Eval,

Source§

impl<Args> FunCall<Args> for No

Source§

impl<Args> FunCall<Args> for Yes

Source§

impl<Args: List> FunCall<Args> for BuildList
where HCons<Ret, HCons<Quote<Args>, HNil>>: Eval,

Source§

impl<Func, Acc, L: List> FunCall<HCons<Func, HCons<Acc, HCons<L, HNil>>>> for FoldL

Source§

impl<Func, L: List> FunCall<HCons<Func, HCons<L, HNil>>> for Filter

Source§

impl<Func, L: List> FunCall<HCons<Func, HCons<L, HNil>>> for Map

Source§

impl<Func, L: List, Init> FunCall<HCons<Func, HCons<L, HCons<Init, HNil>>>> for FoldR

Source§

impl<H1, T1: List, H2, T2: List> FunCall<HCons<HCons<H1, T1>, HCons<HCons<H2, T2>, HNil>>> for DifferP

Source§

impl<H, T> FunCall<HCons<H, HCons<T, HNil>>> for Cons
where HCons<Ret, HCons<Quote<HCons<H, T>>, HNil>>: Eval,

Source§

impl<H, T, Accum> FunCall<HCons<Accum, HNil>> for ConcatCont<HCons<H, T>>
where HCons<Cons, HCons<Quote<H>, HCons<HCons<Concat, HCons<Quote<T>, HCons<Quote<Accum>, HNil>>>, HNil>>>: Eval,

Source§

impl<H, T: List> FunCall<HCons<HCons<H, T>, HCons<HNil, HNil>>> for DifferP

Source§

impl<H, T: List> FunCall<HCons<HNil, HCons<HCons<H, T>, HNil>>> for DifferP

Source§

impl<Haystack, Item> FunCall<HCons<Haystack, HCons<Item, HNil>>> for Contains
where HCons<Any, HCons<HCons<Partial, HCons<Is, HCons<Quote<Item>, HNil>>>, HCons<Quote<Haystack>, HNil>>>: Eval,

Source§

type Result = <HCons<Any, HCons<HCons<Partial, HCons<Is, HCons<Quote<Item>, HNil>>>, HCons<Quote<Haystack>, HNil>>> as Eval>::Result

Source§

impl<In: List, Out> FunCall<HCons<Out, HNil>> for RevCont<In>
where HCons<Rev5, HCons<Quote<In::Tail>, HCons<HCons<Cons, HCons<Quote<In::Head>, HCons<Quote<Out>, HNil>>>, HNil>>>: Eval,

Source§

type Result = <HCons<Rev5, HCons<Quote<<In as List>::Tail>, HCons<HCons<Cons, HCons<Quote<<In as List>::Head>, HCons<Quote<Out>, HNil>>>, HNil>>> as Eval>::Result

Source§

impl<L, R> FunCall<HCons<L, HCons<R, HNil>>> for Is
where L: LispId, R: LispId, L::Id: IsEqual<R::Id>, <L::Id as IsEqual<R::Id>>::Output: Default,

Source§

type Result = <<L as LispId>::Id as IsEqual<<R as LispId>::Id>>::Output

Source§

impl<L, R> FunCall<HCons<L, HCons<R, HNil>>> for IsNot
where HCons<Not, HCons<HCons<Is, HCons<Quote<L>, HCons<Quote<R>, HNil>>>, HNil>>: Eval,

Source§

impl<L: List> FunCall<HCons<L, HNil>> for EmptyP
where HCons<Ret, HCons<Quote<L::IsEOL>, HNil>>: Eval,

Source§

impl<L: List> FunCall<HCons<L, HNil>> for Head
where HCons<Ret, HCons<Quote<L::Head>, HNil>>: Eval,

Source§

impl<L: List> FunCall<HCons<L, HNil>> for Rev4
where HCons<Rev4, HCons<Quote<L>, HCons<HNil, HNil>>>: Eval,

Source§

impl<L: List> FunCall<HCons<L, HNil>> for Rev5
where HCons<Rev5, HCons<Quote<L>, HCons<HNil, HNil>>>: Eval,

Source§

impl<L: List> FunCall<HCons<L, HNil>> for Tail
where HCons<Ret, HCons<Quote<L::Tail>, HNil>>: Eval,

Source§

impl<L: List, Needle: LispId> FunCall<HCons<Needle, HCons<L, HNil>>> for Without

Source§

impl<L: Add<U1>> FunCall<HCons<L, HNil>> for Inc
where HCons<Ret, HCons<Quote<L::Output>, HNil>>: Eval,

Source§

impl<L: Add<R>, R> FunCall<HCons<L, HCons<R, HNil>>> for Add
where HCons<Ret, HCons<Quote<L::Output>, HNil>>: Eval,

Source§

type Result = <HCons<Ret, HCons<Quote<<L as Add<R>>::Output>, HNil>> as Eval>::Result

Source§

impl<L: Sub<U1>> FunCall<HCons<L, HNil>> for Dec
where HCons<Ret, HCons<Quote<L::Output>, HNil>>: Eval,

Source§

impl<L: Sub<R>, R> FunCall<HCons<L, HCons<R, HNil>>> for Sub
where HCons<Ret, HCons<Quote<L::Output>, HNil>>: Eval,

Source§

type Result = <HCons<Ret, HCons<Quote<<L as Sub<R>>::Output>, HNil>> as Eval>::Result

Source§

impl<Needle> FunCall<HCons<Needle, HCons<HNil, HNil>>> for Find

Source§

impl<Needle, H, T> FunCall<HCons<Needle, HCons<HCons<H, T>, HNil>>> for Find
where HCons<If, HCons<HCons<Is, HCons<Needle, HCons<Quote<H>, HNil>>>, HCons<Here, HCons<HCons<WrapMissing, HCons<HCons<Find, HCons<Needle, HCons<Quote<T>, HNil>>>, HNil>>, HNil>>>>: Eval,

Source§

type Result = <HCons<If, HCons<HCons<Is, HCons<Needle, HCons<Quote<H>, HNil>>>, HCons<Here, HCons<HCons<WrapMissing, HCons<HCons<Find, HCons<Needle, HCons<Quote<T>, HNil>>>, HNil>>, HNil>>>> as Eval>::Result

Source§

impl<Old: List, New: List> FunCall<HCons<Old, HCons<New, HNil>>> for Rev4

Source§

impl<Old: List, New: List> FunCall<HCons<Old, HCons<New, HNil>>> for Rev5

Source§

impl<P, Args> FunCall<Args> for Inverted<P>
where HCons<Not, HCons<HCons<Quote<P>, Args>, HNil>>: Eval,

Source§

type Result = <HCons<Not, HCons<HCons<Quote<P>, Args>, HNil>> as Eval>::Result

Source§

impl<Pred> FunCall<HCons<Pred, HCons<HNil, HNil>>> for FindPred

Source§

impl<Pred> FunCall<HCons<Pred, HNil>> for Invert
where HCons<Ret, HCons<Quote<Inverted<Pred>>, HNil>>: Eval,

Source§

impl<Pred, H, T> FunCall<HCons<Pred, HCons<HCons<H, T>, HNil>>> for FindPred
where HCons<If, HCons<HCons<Quote<Pred>, HCons<Quote<H>, HNil>>, HCons<U0, HCons<HCons<WrapMissing, HCons<HCons<FindPred, HCons<Quote<Pred>, HCons<Quote<T>, HNil>>>, HNil>>, HNil>>>>: Eval,

Source§

type Result = <HCons<If, HCons<HCons<Quote<Pred>, HCons<Quote<H>, HNil>>, HCons<UTerm, HCons<HCons<WrapMissing, HCons<HCons<FindPred, HCons<Quote<Pred>, HCons<Quote<T>, HNil>>>, HNil>>, HNil>>>> as Eval>::Result

Source§

impl<Pred, Haystack> FunCall<HCons<Pred, HCons<Haystack, HNil>>> for All
where HCons<Not, HCons<HCons<Any, HCons<HCons<Invert, HCons<Pred, HNil>>, HCons<Quote<Haystack>, HNil>>>, HNil>>: Eval,

Source§

impl<Pred, Haystack> FunCall<HCons<Pred, HCons<Haystack, HNil>>> for Any

Source§

impl<Prefix, Tail> FunCall<Tail> for PartialImpl<Prefix>
where HCons<Concat, HCons<Quote<Prefix>, HCons<HCons<Map, HCons<Quote, HCons<Quote<Tail>, HNil>>>, HNil>>>: Eval, <HCons<Concat, HCons<Quote<Prefix>, HCons<HCons<Map, HCons<Quote, HCons<Quote<Tail>, HNil>>>, HNil>>> as Eval>::Result: Eval,

Source§

impl<T> FunCall<HCons<Option<T>, HNil>> for Unwrap
where HCons<Ret, HCons<Quote<T>, HNil>>: Eval,

Source§

impl<T> FunCall<HCons<Rc<T>, HNil>> for UnwrapRc
where HCons<Ret, HCons<Quote<T>, HNil>>: Eval,

Source§

impl<T> FunCall<HCons<T, HNil>> for WrapRc
where HCons<Ret, HCons<Quote<Rc<T>>, HNil>>: Eval,

Source§

impl<T, U> FunCall<HCons<T, U>> for Ret

Source§

impl<Test, L: CollatedBy<Test>> FunCall<HCons<Test, HCons<L, HNil>>> for Collate

Source§

impl<X, Tail> FunCall<HCons<Tail, HNil>> for Prepend<X>
where HCons<Cons, HCons<Quote<X>, HCons<Quote<Tail>, HNil>>>: Eval,

Source§

impl<X: LispId, L: List> FunCall<HCons<X, HCons<L, HNil>>> for SetInsert