Trait tylisp::engine::SynCall[][src]

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

Associated Types

Implementors

impl SynCall<HNil> for And where
    HCons<Ret, HCons<Quote<True>, HNil>>: Eval
[src]

impl SynCall<HNil> for Or where
    HCons<Ret, HCons<Quote<False>, HNil>>: Eval
[src]

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

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

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

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

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

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

type Result = <HCons<If, HCons<H, HCons<HCons<And, T>, HCons<Quote<False>, HNil>>>> as Eval>::Result

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

type Result = <HCons<If, HCons<H, HCons<Quote<True>, HCons<HCons<Or, T>, HNil>>>> as Eval>::Result

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

type Result = <HCons<Ret, HCons<Quote<PartialImpl<Prefix>>, HNil>> as Eval>::Result

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
[src]

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