tulisp 0.29.0

An embeddable lisp interpreter.
Documentation
use crate::{
    Error, TulispContext, TulispObject,
    bytecode::{Instruction, compiler::compiler::compile_expr},
};

pub(super) fn compile_fn_plist_get(
    ctx: &mut TulispContext,
    name: &TulispObject,
    args: &TulispObject,
) -> Result<Vec<Instruction>, Error> {
    ctx.compile_2_arg_call(name, args, false, |ctx, plist, property, _| {
        let mut result = compile_expr(ctx, property)?;
        result.append(&mut compile_expr(ctx, plist)?);
        if ctx.compiler.as_ref().unwrap().keep_result {
            result.push(Instruction::PlistGet);
        }
        Ok(result)
    })
}