fn resolve_numbers(symbols: &mut SymbolTable, args: &[Expr], name: &str) -> Result<Vec<Fraction>> {
fn compile_add(emit: &mut FunctionEmitter, symbols: &mut SymbolTable, args: &[Expr]) -> Result<()> {
fn compile_sub(emit: &mut FunctionEmitter, symbols: &mut SymbolTable, args: &[Expr]) -> Result<()> {
fn compile_mul(emit: &mut FunctionEmitter, symbols: &mut SymbolTable, args: &[Expr]) -> Result<()> {
fn compile_div(emit: &mut FunctionEmitter, symbols: &mut SymbolTable, args: &[Expr]) -> Result<()> {
fn compile_mod(emit: &mut FunctionEmitter, symbols: &mut SymbolTable, args: &[Expr]) -> Result<()> {
fn compile_eql(emit: &mut FunctionEmitter, symbols: &mut SymbolTable, args: &[Expr]) -> Result<()> {