This page requires javascript to work

[][src]Enum voile::syntax::abs::ast::Abs

pub enum Abs {
    Type(LocLevel),
    Var(IdentUIDDBI),
    Ref(IdentGI),
    Meta(IdentMI),
    Lift(LocLevelTypeBox<Self>),
    Cons(Ident),
    Proj(LocBox<Self>, Ident),
    App(LocBox<Self>, PlicitBox<Self>),
    Dt(LocPiSigUIDPlicitBox<Self>, Box<Self>),
    Lam(LocIdentUIDBox<Self>),
    Pair(LocBox<Self>, Box<Self>),
    Fst(LocBox<Self>),
    Snd(LocBox<Self>),
    RowPoly(LocVarRecVec<LabAbs>, Option<Box<Self>>),
    Rec(LocVec<LabAbs>, Option<Box<Self>>),
    Whatever(Loc),
    CaseOr(IdentIdentUIDBox<Self>, Box<Self>),
    RowKind(LocVarRecVec<Ident>),
}

Variants

Type(LocLevel)
Var(IdentUIDDBI)

Local variable

Ref(IdentGI)

Global variable

Meta(IdentMI)

Meta variable

Lift(LocLevelTypeBox<Self>)

Lift an expression many times

Cons(Ident)

Constructor call

Proj(LocBox<Self>, Ident)

Record projection

App(LocBox<Self>, PlicitBox<Self>)

Apply or Pipeline in surface

Dt(LocPiSigUIDPlicitBox<Self>, Box<Self>)

Dependent Type, (a -> b -> c) as Dt(_, DtKind::Pi, _, _, a, Dt(_, DtKind::Pi, _, _, b, c))

Lam(LocIdentUIDBox<Self>)

The first Loc is the syntax info of this whole lambda, while the second is about its parameter

Pair(LocBox<Self>, Box<Self>)
Fst(LocBox<Self>)
Snd(LocBox<Self>)
RowPoly(LocVarRecVec<LabAbs>, Option<Box<Self>>)

Row-polymorphic types, corresponds to RowPoly

Rec(LocVec<LabAbs>, Option<Box<Self>>)

Record literals

Whatever(Loc)

Empty type eliminator,

CaseOr(IdentIdentUIDBox<Self>, Box<Self>)

Case-split expressions.

RowKind(LocVarRecVec<Ident>)

Row-polymorphic kinds, corresponds to RowKind

Methods

impl Abs[src]

pub fn dependent_type(
    info: Loc,
    kind: PiSig,
    name: UID,
    plicit: Plicit,
    a: Self,
    b: Self
) -> Self
[src]

pub fn row_polymorphic_type(
    info: Loc,
    kind: VarRec,
    labels: Vec<LabAbs>,
    rest: Option<Self>
) -> Self
[src]

pub fn record(info: Loc, fields: Vec<LabAbs>, rest: Option<Self>) -> Self[src]

pub fn app(info: Loc, function: Self, plicit: Plicit, argument: Self) -> Self[src]

pub fn proj(info: Loc, record: Self, field: Ident) -> Self[src]

pub fn fst(info: Loc, of: Self) -> Self[src]

pub fn snd(info: Loc, of: Self) -> Self[src]

pub fn lam(whole_info: Loc, param: Ident, name: UID, body: Self) -> Self[src]

pub fn pair(info: Loc, first: Self, second: Self) -> Self[src]

pub fn case_or(
    label: Ident,
    binding: Ident,
    uid: UID,
    clause: Self,
    or: Self
) -> Self
[src]

pub fn lift(info: Loc, lift_count: LevelType, expr: Self) -> Self[src]

pub fn pi(
    info: Loc,
    name: UID,
    plicit: Plicit,
    input: Self,
    output: Self
) -> Self
[src]

pub fn sig(
    info: Loc,
    name: UID,
    plicit: Plicit,
    first: Self,
    second: Self
) -> Self
[src]

Trait Implementations

impl Eq for Abs[src]

impl Clone for Abs[src]

impl PartialEq<Abs> for Abs[src]

impl Debug for Abs[src]

impl Display for Abs[src]

impl ToLoc for Abs[src]

Auto Trait Implementations

impl Send for Abs

impl Unpin for Abs

impl Sync for Abs

impl UnwindSafe for Abs

impl RefUnwindSafe for Abs

Blanket Implementations

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]