airlang 0.28.0

Air is a universal, reliable, and lean programming language.
Documentation
use crate::semantics::cfg::Cfg;
use crate::semantics::ctx::Ctx;
use crate::semantics::func::DynFunc;
use crate::semantics::val::FuncVal;
use crate::semantics::val::Val;

#[derive(Clone, PartialEq, Eq, Hash)]
pub struct Fact {
    func: FuncVal,
    input: Val,
    output: Val,
}

impl Fact {
    pub fn new(cfg: &mut Cfg, ctx: Ctx<Val>, func: FuncVal, input: Val) -> Self {
        let output = func.call(cfg, ctx, input.clone());
        Self { func, input, output }
    }

    pub fn func(&self) -> &FuncVal {
        &self.func
    }

    pub fn input(&self) -> &Val {
        &self.input
    }

    pub fn output(&self) -> &Val {
        &self.output
    }
}