From c43aeac8c07b69b5cd74059a72bc64a2f3bad131 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Sun, 7 May 2023 12:24:04 -0400 Subject: [PATCH] more scaffolding for defining functions --- mumble | Bin 185176 -> 185496 bytes notes/savepoint.txt | 1 + src/mumble.c | 59 ++++++++++++++++++++++---------------------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/mumble b/mumble index 438a268f6eda81240d2ce9378a8f30669da87504..98b823138f599ab8c4da9994d00015e6bb6e58f0 100755 GIT binary patch delta 43133 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 delta 42911 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 == 2, "Lambda definition requires two arguments; try @ { {x y} { + x y } }"); + LISPVAL_ASSERT(v->cell[0]->type == LISPVAL_QEXPR, "Lambda definition (@) requires that the first sub-arg be a q-expression; try @ { {x y} { + x y } }"); + LISPVAL_ASSERT(v->cell[1]->type == LISPVAL_QEXPR, "Lambda definition (@) requires that the second sub-arg be a q-expression; try @ { {x y} { + x y } }"); + + lispval* variables = clone_lispval(v->cell[0]); + lispval* manipulation = clone_lispval(v->cell[1]); + + for(int i=0; i>variables->count; i++){ + 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); + return lambda; +} // Simple math ops lispval* builtin_math_ops(char* op, lispval* v, lispenv* e) { @@ -806,30 +823,6 @@ lispval* builtin_divide(lispval* v, lispenv* env) return builtin_math_ops("/", v, env); } -// Aggregate both math and operations over lists -lispval* builtin_functions(char* func, lispval* v, lispenv* env) -{ - if (strcmp("list", func) == 0) { - return builtin_list(v, env); - } else if (strcmp("head", func) == 0) { - return builtin_head(v, env); - } else if (strcmp("tail", func) == 0) { - return builtin_tail(v, env); - } else if (strcmp("join", func) == 0) { - return builtin_join(v, env); - } else if (strcmp("eval", func) == 0) { - return builtin_eval(v, env); - } else if (strcmp("len", func) == 0) { - return builtin_len(v, env); - } else if (strstr("+-/*", func)) { - return builtin_math_ops(func, v, env); - } else { - return lispval_err("Unknown function"); - } - // Returns something that should be freed later: depends on eval - // Returns something that is independent of the input: depends on eval -} - // Add builtins to an env void lispenv_add_builtin(char* builtin_func_name, lispbuiltin func, lispenv* env) { @@ -857,6 +850,7 @@ void lispenv_add_builtins(lispenv* env) lispenv_add_builtin("eval", builtin_eval, env); lispenv_add_builtin("join", builtin_join, env); lispenv_add_builtin("def", builtin_def, env); + lispenv_add_builtin("@", builtin_define_lambda, env); } // Evaluate the lispval @@ -948,7 +942,6 @@ lispval* evaluate_lispval(lispval* l, lispenv* env) if (VERBOSE) printfln("Cleaning up"); - // builtin_functions(operation->sym, l, env); delete_lispval(f); delete_lispval(operands); // delete_lispval(temp); @@ -959,23 +952,29 @@ lispval* evaluate_lispval(lispval* l, lispenv* env) if (l->count >= 2 && ((l->cell[0])->type == LISPVAL_USER_FUNC)) { // Do something with user-defined functions here + return lispval_err("Error: User-defined functions not yet implemented"); } return l; } // Increase or decrease verbosity level manually -void modify_verbosity(char* command) +int modify_verbosity(char* command) { if (strcmp("VERBOSE=0", command) == 0) { VERBOSE = 0; + return 1; } if (strcmp("VERBOSE=1", command) == 0) { VERBOSE = 1; printfln("VERBOSE=1"); + return 1; } if (strcmp("VERBOSE=2", command) == 0) { + printfln("VERBOSE=2"); VERBOSE = 2; + return 1; } + return 0; } // Main @@ -1028,12 +1027,12 @@ int main(int argc, char** argv) int loop = 1; while (loop) { char* input = readline("mumble> "); - modify_verbosity(input); if (input == NULL) { - // ^ catches Ctrl+D - loop = 0; - + break; } else { + if(modify_verbosity(input)){ + continue; + } /* Attempt to Parse the user Input */ mpc_result_t result; if (mpc_parse("", input, Mumble, &result)) {