From 3934ab8da8eff43a6817aa2a00dcf66d0811183b Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Sun, 7 May 2023 17:46:17 -0400 Subject: [PATCH] feat: get user function application working better! --- mumble | Bin 125232 -> 125232 bytes src/mumble.c | 51 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/mumble b/mumble index dbb2d8d4476ebc80567eb22c91eae41e98bb058e..464630499727794e2e5783e44539bb21d9b9a55f 100755 GIT binary patch delta 35558 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 P;xY^0mCb!2Z&Lmr>9+dX delta 35799 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 diff --git a/src/mumble.c b/src/mumble.c index 224146b..b52010d 100644 --- a/src/mumble.c +++ b/src/mumble.c @@ -131,12 +131,12 @@ lispval* lispval_builtin_func(lispbuiltin func, char* builtin_func_name) } lispenv* new_lispenv(); -lispval* lispval_lambda_func(lispval* variables, lispval* manipulation) +lispval* lispval_lambda_func(lispval* variables, lispval* manipulation, lispenv* env) { lispval* v = malloc(sizeof(lispval)); v->type = LISPVAL_USER_FUNC; v->builtin_func = NULL; - v->env = new_lispenv(); + v->env = (env == NULL ? new_lispenv() : env); v->variables = variables; v->manipulation = manipulation; // unclear how to garbage-collect this. Maybe add to a list and collect at the end? @@ -223,31 +223,33 @@ void delete_lispval(lispval* v) // free(v->func); break; case LISPVAL_USER_FUNC: + // for now, do nothing + /* if (VERBOSE) printfln("Freeing user-defined func"); if (v->env != NULL) { // destroy_lispenv(v->env); - free(v->env); - v->env = NULL; + // free(v->env); + //v->env = NULL; } if (v->variables != NULL) { - // delete_lispval(v->variables); - free(v->variables); - v->variables = NULL; + // delete_lispval(v->variables); + // v->variables = NULL; } if (v->manipulation != NULL) { // delete_lispval(v->manipulation); - free(v->manipulation); - v->manipulation = NULL; + // free(v->manipulation); + // v->manipulation = NULL; } if (v != NULL) - free(v); + // free(v); if (VERBOSE) printfln("Freed user-defined func"); // Don't do anything with v->func for now // Though we could delete the pointer to the function later // free(v->func); - break; + */ + break; case LISPVAL_SEXPR: case LISPVAL_QEXPR: if (VERBOSE) @@ -493,6 +495,8 @@ void print_lispval_tree(lispval* v, int indent_level) break; case LISPVAL_USER_FUNC: printfln("%sUser-defined function: %p", indent, v->env); // Identify it with its environment? + print_lispval_tree(v->variables, indent_level+2); + print_lispval_tree(v->manipulation, indent_level+2); break; case LISPVAL_SEXPR: printfln("%sSExpr, with %d children:", indent, v->count); @@ -596,7 +600,7 @@ lispval* clone_lispval(lispval* old) new = lispval_builtin_func(old->builtin_func, old->builtin_func_name); break; case LISPVAL_USER_FUNC: - new = lispval_lambda_func(old->variables, old->manipulation); + new = lispval_lambda_func(old->variables, old->manipulation, old->env); break; case LISPVAL_SEXPR: new = lispval_sexpr(); @@ -608,7 +612,7 @@ lispval* clone_lispval(lispval* old) return lispval_err("Error: Cloning element of unknown type."); } - if (old->count > 0 && (old->type == LISPVAL_QEXPR || old->type == LISPVAL_SEXPR)) { + if ((old->type == LISPVAL_QEXPR || old->type == LISPVAL_SEXPR) && (old->count > 0) ) { for (int i = 0; i < old->count; i++) { lispval* temp_child = old->cell[i]; lispval* child = clone_lispval(temp_child); @@ -734,7 +738,13 @@ lispval* builtin_join(lispval* l, lispenv* e) lispval* builtin_def(lispval* v, lispenv* env) { // Takes one argument: def { { a b } { 1 2 } } - lispval* source = v->cell[0]; + // Takes two arguments: argument: def {a} 1; def {init} (@ {x y} {x}) + lispval* symbol_wrapper = v->cell[0]; + lispval* value = v->cell[1]; + + insert_in_current_lispenv(symbol_wrapper->cell[0]->sym, value, env); + lispval* source = v->cell[0]; + return lispval_sexpr(); // () LISPVAL_ASSERT(v->count == 1, "Error: function def passed too many arguments"); LISPVAL_ASSERT(source->type == LISPVAL_QEXPR, "Error: Argument passed to def is not a q-expr, i.e., a bracketed list."); LISPVAL_ASSERT(source->count == 2, "Error: Argument passed to def should be a q expr with two q expressions as children: def { { a b } { 1 2 } } "); @@ -752,7 +762,7 @@ lispval* builtin_def(lispval* v, lispenv* env) print_lispval_tree(values, 0); if (VERBOSE) printf("\n"); - insert_in_current_lispenv(symbols->cell[i]->sym, values->cell[i], env); + insert_in_current_lispenv(symbols->cell[i]->sym, clone_lispval(values->cell[i]), env); } return lispval_sexpr(); // () } @@ -775,7 +785,7 @@ lispval* builtin_define_lambda(lispval* v, lispenv* env) LISPVAL_ASSERT(variables->cell[i]->type == LISPVAL_SYM, "First argument in function definition must only be symbols. Try @ { {x y} { + x y } }"); } - lispval* lambda = lispval_lambda_func(variables, manipulation); + lispval* lambda = lispval_lambda_func(variables, manipulation, NULL); return lambda; } // Simple math ops @@ -978,12 +988,13 @@ lispval* evaluate_lispval(lispval* l, lispenv* env) } if (l->count >= 2 && ((l->cell[0])->type == LISPVAL_USER_FUNC)) { - if (VERBOSE) + lispval* f = l->cell[0]; // clone_lispval(l->cell[0]); + if (VERBOSE){ printfln("Evaluating user-defined function"); - - lispval* f = clone_lispval(l->cell[0]); + print_lispval_tree(f, 2); + if(VERBOSE) printfln("Expected %d variables, found %d variables.", f->variables->count, l->count -1); + } f->env->parent = env; - LISPVAL_ASSERT(f->variables->count == (l->count - 1), "Error: Incorrect number of variables given to user-defined function"); if (VERBOSE) printfln("Number of variables match");