Generic mutation scheduling system

IO adapted to use it
Also, Atoms can now dispatch type-erased requests
This commit is contained in:
2023-09-14 22:54:42 +01:00
parent 8c866967a9
commit 3c0056c2db
51 changed files with 991 additions and 379 deletions

View File

@@ -4,7 +4,6 @@ use std::sync::Arc;
use itertools::Itertools;
use super::Boolean;
use crate::interpreted::ExprInst;
use crate::systems::cast_exprinst::with_uint;
use crate::systems::codegen::{orchid_opt, tuple};
use crate::systems::RuntimeError;
@@ -14,7 +13,7 @@ use crate::{atomic_inert, define_fn, ConstTree, Interner, Literal};
/// A block of binary data
#[derive(Clone, Hash, PartialEq, Eq)]
pub struct Binary(pub Arc<Vec<u8>>);
atomic_inert!(Binary, "a binary blob");
atomic_inert!(Binary, typestr = "a binary blob");
impl Debug for Binary {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {

View File

@@ -1,14 +1,14 @@
use std::rc::Rc;
use crate::interner::Interner;
use crate::representations::interpreted::{Clause, ExprInst};
use crate::representations::interpreted::Clause;
use crate::systems::AssertionError;
use crate::{atomic_inert, define_fn, ConstTree, Literal, PathSet};
/// Booleans exposed to Orchid
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Boolean(pub bool);
atomic_inert!(Boolean, "a boolean");
atomic_inert!(Boolean, typestr = "a boolean");
impl From<bool> for Boolean {
fn from(value: bool) -> Self {

View File

@@ -10,7 +10,7 @@ use crate::{atomic_inert, define_fn, ConstTree, Interner};
#[derive(Debug, Clone)]
pub struct State(Rc<RefCell<ExprInst>>);
atomic_inert!(State, "a state");
atomic_inert!(State, typestr = "a state");
#[derive(Debug, Clone)]
struct NewStateCmd;