Struct programinduction::domains::circuits::Evaluator
source · pub struct Evaluator;
Expand description
An Evaluator
for the circuits domain.
Examples
use polytype::{ptp, tp};
use programinduction::domains::circuits;
use programinduction::{lambda, ECParams, EC};
let dsl = circuits::dsl();
let examples = vec![ // NOT
(vec![false], true),
(vec![true], false),
];
let task = lambda::task_by_evaluation(
circuits::Evaluator,
ptp!(@arrow[tp!(bool), tp!(bool)]),
&examples,
);
let ec_params = ECParams {
frontier_limit: 1,
search_limit_timeout: None,
search_limit_description_length: Some(5.0),
};
let frontiers = dsl.explore(&ec_params, &[task]);
let (expr, _logprior, _loglikelihood) = frontiers[0].best_solution().unwrap();
assert_eq!(dsl.display(expr), "(λ (nand $0 $0))");
Trait Implementations§
source§impl Evaluator for Evaluator
impl Evaluator for Evaluator
§type Space = bool
type Space = bool
The value space of a domain. The inputs of every primitive and the result of every
evaluation must be of this type.
fn evaluate( &self, primitive: &str, inp: &[Self::Space] ) -> Result<Self::Space, Self::Error>
fn lift(&self, _f: LiftedFunction<Self::Space, Self>) -> Option<Self::Space>
impl Copy for Evaluator
Auto Trait Implementations§
impl RefUnwindSafe for Evaluator
impl Send for Evaluator
impl Sync for Evaluator
impl Unpin for Evaluator
impl UnwindSafe for Evaluator
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more