use std::fmt::Debug;
pub trait InteractionOperatorRepresentation {
fn arity(&self) -> usize;
fn is_associative(&self) -> bool;
}
pub trait CommonIoInteractionInterface : Sized {
type InteractionLeafPatternType : Debug + Clone;
type InteractionOperatorType : Debug + InteractionOperatorRepresentation + Clone + PartialEq + Eq;
}
#[derive(Debug)]
pub enum InteractionInternalRepresentation<CioII : CommonIoInteractionInterface> {
LeafPattern(CioII::InteractionLeafPatternType),
Operator(CioII::InteractionOperatorType, Vec<InteractionInternalRepresentation<CioII>>)
}