Struct fetish_lib::interpreter_and_embedder_state::InterpreterAndEmbedderState[][src]

pub struct InterpreterAndEmbedderState<'a> {
    pub interpreter_state: InterpreterState<'a>,
    pub embedder_state: EmbedderState<'a>,
    pub newly_evaluated_terms: NewlyEvaluatedTerms,
}
Expand description

A more convenient, stateful wrapper around an InterpreterState and EmbedderState which automatically tracks any NewlyEvaluatedTerms originating from evaluations, and an interface which allows for using these to update the wrapped EmbedderState at a caller-chosen time.

Fields

interpreter_state: InterpreterState<'a>embedder_state: EmbedderState<'a>newly_evaluated_terms: NewlyEvaluatedTerms

Implementations

impl<'a> InterpreterAndEmbedderState<'a>[src]

pub fn get_context(&self) -> &Context[src]

Gets the Context that this InterpreterAndEmbedderState exists in.

pub fn evaluate(&mut self, term_app: &TermApplication) -> TermReference[src]

Given a TermApplication, uses the wrapped InterpreterState to evaluate the application, returning a TermReference for the result of the evaluation. Any newly-evaluated terms which result from evaluation will be added to this InterpreterAndEmbedderState’s newly_evaluated_terms member variable.

pub fn ensure_every_type_has_a_term_on_init(&mut self)[src]

Convenience method to force the wrapped InterpreterState to have at least one term inhabiting every type, assuming that it doesn’t really matter what these are. Calling this method will result in every newly-added term being added to the wrapped NewlyEvaluatedTerms

pub fn bayesian_update_step(&mut self)[src]

Uses the wrapped NewlyEvaluatedTerms and InterpreterState to update the embeddings within the wrapped EmbedderState. Calling this method will not modfiy the wrapped NewlyEvaluatedTerms, in case they are still of use after an embedding update in your particular use-case.

pub fn clear_newly_received(&mut self)[src]

Clears out the wrapped NewlyEvaluatedTerms, which typically will indicate that a new cycle of evaluations of terms against the InterpreterState is about to begin.

pub fn new(
    model_prior_specification: &'a dyn PriorSpecification,
    elaborator_prior_specification: &'a dyn PriorSpecification,
    ctxt: &'a Context
) -> InterpreterAndEmbedderState<'a>
[src]

Auto Trait Implementations

Blanket Implementations

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

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

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

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

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

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

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

pub fn from(t: T) -> T[src]

Performs the conversion.

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

pub fn into(self) -> U[src]

Performs the conversion.

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.

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

Performs the conversion.

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.

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

Performs the conversion.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

pub fn vzip(self) -> V