jkl-lang 0.1.51

Open Source Programming Language
use crate::scanner::Token;
use crate::stmt::Stmt;
use crate::environment::Environment;
use crate::expr::LiteralValue;
use std::rc::Rc;
use std::cell::RefCell;

pub struct FunctionVal {
    paren: Token,
    params: Vec<Token>,
    body: Vec<Stmt>,
    parent_environment: Rc<RefCell<Environment>>,
}


impl FnOnce<(Vec<LiteralValue>,)> for FunctionVal {
    type Output = LiteralValue;
    extern "rust-call" fn call_once(self, _args: (Vec<LiteralValue>,)) -> Self::Output {
        todo!();
    }
}

impl FnMut<(Vec<LiteralValue>,)> for FunctionVal {
    extern "rust-call" fn call_mut(&mut self, _args: (Vec<LiteralValue>,)) -> Self::Output {
        todo!();
    }
}


impl Fn<(Vec<LiteralValue>,)> for FunctionVal {
    extern "rust-call" fn call(&self, _args: (Vec<LiteralValue>,)) -> Self::Output {
        todo!();
    }
}