Struct libunseemly::form::Form [−][src]
pub struct Form {
pub name: Name,
pub grammar: Rc<FormPat>,
pub type_compare: BiDiWR<Canonicalize, Subtype>,
pub synth_type: BiDiWR<SynthTy, UnpackTy>,
pub eval: BiDiWR<Eval, Destructure>,
pub quasiquote: BiDiWR<QQuote, QQuoteDestr>,
}
Expand description
Unseemly language form. This is what tells us what a particular Node
actually does.
Fields
name: Name
The name of the form. Mainly for internal use.
grammar: Rc<FormPat>
The grammar the programmer should use to invoke this form. This contains information about bindings and syntax extension:
type_compare: BiDiWR<Canonicalize, Subtype>
(Meaningful for types only) Subtype.
synth_type: BiDiWR<SynthTy, UnpackTy>
From a type environment, construct the type of this term.
eval: BiDiWR<Eval, Destructure>
(Meaningful for exprs and pats only) From a value environment, evaluate this term. Or, (HACK) macro expansion, for macro invocations (just so we don’t need another field)
quasiquote: BiDiWR<QQuote, QQuoteDestr>
At runtime, pick up code to use it as a value
Trait Implementations
The Unseemly type that corresponds to to the Reifiable
type.
This leaves abstract the type parameters of Self
; invoke like Self::<Irr,Irr>::ty()
.
e.g. ∀ A. Pair<A int>
TODO: rename to generic_ty
Read more
A name for that type, so that recursive types are okay.
Ignore the type parameters of Self
; invoke like Self::<Irr,Irr>::ty_name()
.
e.g. WithInteger
Read more
How to refer to this type, given an environment in which
ty_name()
is defined to be ty()
.
Parameters will be concrete.
e.g. WithInteger<Float>
(Types using this type will use this, rather than ty
)
Don’t override this. Read more
Auto Trait Implementations
impl !RefUnwindSafe for Form
impl !UnwindSafe for Form
Blanket Implementations
Mutably borrows from an owned value. Read more
Pipes by value. This is generally the method you want to use. Read more
Borrows self
and passes that borrow into the pipe function. Read more
Mutably borrows self
and passes that borrow into the pipe function. Read more
Borrows self
, then passes self.borrow()
into the pipe function. Read more
Mutably borrows self
, then passes self.borrow_mut()
into the pipe
function. Read more
Borrows self
, then passes self.as_ref()
into the pipe function.
Mutably borrows self
, then passes self.as_mut()
into the pipe
function. Read more
Borrows self
, then passes self.deref()
into the pipe function.
type Output = T
type Output = T
Should always be Self
Immutable access to the Borrow<B>
of a value. Read more
Mutable access to the BorrowMut<B>
of a value. Read more
Immutable access to the AsRef<R>
view of a value. Read more
Mutable access to the AsMut<R>
view of a value. Read more
Immutable access to the Deref::Target
of a value. Read more
Mutable access to the Deref::Target
of a value. Read more
Calls .tap()
only in debug builds, and is erased in release builds.
Calls .tap_mut()
only in debug builds, and is erased in release
builds. Read more
Calls .tap_borrow()
only in debug builds, and is erased in release
builds. Read more
Calls .tap_borrow_mut()
only in debug builds, and is erased in release
builds. Read more
Calls .tap_ref()
only in debug builds, and is erased in release
builds. Read more
Calls .tap_ref_mut()
only in debug builds, and is erased in release
builds. Read more
Calls .tap_deref()
only in debug builds, and is erased in release
builds. Read more