pub use self::{alphabet::*, primitives::*, scope::*, utils::*};
pub(crate) mod alphabet;
pub(crate) mod primitives;
pub(crate) mod scope;
pub(crate) mod utils;
pub mod states;
pub mod turing;
pub trait Extend<A> {
fn extend<T: IntoIterator<Item = A>>(&mut self, iter: T) -> Result<(), String>;
}
pub trait Symbolic: Clone + Default + PartialEq + std::fmt::Debug + std::fmt::Display {}
impl Symbolic for char {}
impl Symbolic for &str {}
impl Symbolic for String {}
pub trait With<T> {
type Output;
fn with(&self, other: &T) -> Self::Output;
}