use crate::term::Term;
use crate::context::Context;
use crate::opers::Calculation;
use crate::num::Num;
pub trait Func<N: Num> {
fn eval(&self, args: &[Term<N>], ctx: &Context<N>) -> Calculation<N>;
}
impl<T, N: Num> Func<N> for T
where
T: Fn(&[Term<N>], &Context<N>) -> Calculation<N>,
{
fn eval(&self, args: &[Term<N>], ctx: &Context<N>) -> Calculation<N> {
self(args, ctx)
}
}