Prim1

Enum Prim1 

Source
pub enum Prim1 {
Show 15 variants Car, Cdr, IsNum, IsSym, IsNil, IsPair, CellNew, CellRead, Spawn, Receive, Monitor, SpawnMonitor, IsRaise, RaiseValue, IsCodeFun,
}
Expand description

Grouped under one variant because every member obeys the same staging rule (residualize if the argument is Code, otherwise compute), so the specializer states that rule once.

Variants§

§

Car

§

Cdr

§

IsNum

§

IsSym

§

IsNil

§

IsPair

§

CellNew

§

CellRead

§

Spawn

§

Receive

Unary because the floor is; the argument is ignored.

§

Monitor

§

SpawnMonitor

Not sugar: a turn ends wherever the step budget runs out, so a separate spawn and monitor can be parted by it, letting the child die before the watch registers and the watcher hear noproc rather than the cause.

§

IsRaise

The two exceptions to the staging rule above. A raise reaches these rather than propagating past them, and neither residualizes - which is what folds an interpreter’s raise test away during compilation, leaving the emitted code to get the floor’s own discipline instead.

§

RaiseValue

§

IsCodeFun

Applying a code operator commits to the floor’s calling convention, sound only for functions the floor lifted itself. Scoped per region.

Implementations§

Source§

impl Prim1

Source

pub fn from_name(s: &str) -> Option<Prim1>

Source

pub fn name(self) -> &'static str

Source

pub fn pure(self) -> bool

Distinguishes what may be folded or shared from what may only be residualized in place.

Trait Implementations§

Source§

impl Clone for Prim1

Source§

fn clone(&self) -> Prim1

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Prim1

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Prim1

Source§

fn eq(&self, other: &Prim1) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Prim1

Source§

impl Eq for Prim1

Source§

impl StructuralPartialEq for Prim1

Auto Trait Implementations§

§

impl Freeze for Prim1

§

impl RefUnwindSafe for Prim1

§

impl Send for Prim1

§

impl Sync for Prim1

§

impl Unpin for Prim1

§

impl UnwindSafe for Prim1

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.