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]
impl<'a> InterpreterAndEmbedderState<'a>
[src]pub fn get_context(&self) -> &Context
[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]
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]
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]
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]
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]
pub fn new(
model_prior_specification: &'a dyn PriorSpecification,
elaborator_prior_specification: &'a dyn PriorSpecification,
ctxt: &'a Context
) -> InterpreterAndEmbedderState<'a>
[src]Constructs a new InterpreterAndEmbedderState
with the given PriorSpecification
s
for crate::term_model::TermModel
s and crate::elaborator::Elaborator
s within the given Context
.
Auto Trait Implementations
impl<'a> !RefUnwindSafe for InterpreterAndEmbedderState<'a>
impl<'a> !Send for InterpreterAndEmbedderState<'a>
impl<'a> !Sync for InterpreterAndEmbedderState<'a>
impl<'a> Unpin for InterpreterAndEmbedderState<'a>
impl<'a> !UnwindSafe for InterpreterAndEmbedderState<'a>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,