Trait SynCall

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

A function that takes raw syntax as an argument

NB: Unlike traditional Lisp macros, this returns a Value, not more syntax

Required Associated Types§

Implementors§

Source§

impl SynCall<HNil> for And

Source§

impl SynCall<HNil> for Or

Source§

impl SynCall<HNil> for Cond
where HCons<Ret, HCons<CondNoMatch, HNil>>: Eval,

Source§

type Result = <HCons<Ret, HCons<CondNoMatch, HNil>> as Eval>::Result

Source§

impl<Arg: Eval> SynCall<HCons<Arg, HNil>> for Phantom

Source§

impl<Cond: Eval, T, F> SynCall<HCons<Cond, HCons<T, HCons<F, HNil>>>> for If
where Cond::Result: IfImpl<T, F>,

Source§

type Result = <<Cond as Eval>::Result as IfImpl<T, F>>::Result

Source§

impl<H, T> SynCall<HCons<H, T>> for And
where HCons<If, HCons<H, HCons<HCons<And, T>, HCons<Quote<False>, HNil>>>>: Eval,

Source§

impl<H, T> SynCall<HCons<H, T>> for Or
where HCons<If, HCons<H, HCons<Quote<True>, HCons<HCons<Or, T>, HNil>>>>: Eval,

Source§

impl<Prefix> SynCall<Prefix> for Partial
where HCons<Ret, HCons<Quote<PartialImpl<Prefix>>, HNil>>: Eval,

Source§

impl<Test, Res, Else> SynCall<HCons<HCons<Test, HCons<Res, HNil>>, Else>> for Cond
where HCons<If, HCons<Test, HCons<Res, HCons<HCons<Cond, Else>, HNil>>>>: Eval,

Source§

type Result = <HCons<If, HCons<Test, HCons<Res, HCons<HCons<Cond, Else>, HNil>>>> as Eval>::Result