From b7e5ec69a29dfb87ae1d074588c0b4d854d83e3d Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Sun, 7 May 2023 17:02:12 -0400 Subject: [PATCH] Revert "redefine def to take two arguments" This reverts commit 239fbeff138c193f57d3b2565a30801910dad9d7. --- README.md | 6 +++--- mumble | Bin 125232 -> 125232 bytes src/mumble.c | 23 +++++++++++------------ 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index a33e3d9..161052a 100644 --- a/README.md +++ b/README.md @@ -65,16 +65,16 @@ mumble> eval { head {1 2 3} } mumble> (eval { head {+ tail head } } ) 1 2 3 mumble> len {1 2 3} mumble> join { {1 2} {3 4} } -mumble> def {x} { 100 } +mumble> def { {x} { 100 } } mumble> x -mumble> def { a b c } { 1 2 3} +mumble> def { { a b c } { 1 2 3} } mumble> * a b c mumble> - a b c mumble> / a b c mumble> VERBOSITY=0 mumble> VERBOSITY=1 mumble> VERBOSITY=2 -mumble> def {plus} {(@ {x y} {+ x y})} +mumble> def { {plus} {(@ {x y} {+ x y})} } ( ) mumble> plus ( @ { x y } { + x y } ) diff --git a/mumble b/mumble index 2fbef487521255a5b0ece82ead299ed6e649978e..dbb2d8d4476ebc80567eb22c91eae41e98bb058e 100755 GIT binary patch delta 26001 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 X!@?esdRD>s`}h14oD%nlY*hX~I9y1m diff --git a/src/mumble.c b/src/mumble.c index 650104d..224146b 100644 --- a/src/mumble.c +++ b/src/mumble.c @@ -733,20 +733,19 @@ lispval* builtin_join(lispval* l, lispenv* e) // Define a variable lispval* builtin_def(lispval* v, lispenv* env) { - // Takes two arguments: def { a b } { 1 2 } - LISPVAL_ASSERT(v->count == 2, "Error: function def passed something other than 2 arguments"); - - lispval* symbols = v->cell[0]; - lispval* values = v->cell[1]; - symbols = evaluate_lispval(symbols, env); - values = evaluate_lispval(values, env); - - LISPVAL_ASSERT(symbols->type == LISPVAL_QEXPR, "Error: Argument passed to def is not a q-expr, i.e., a bracketed list."); - LISPVAL_ASSERT(values->type == LISPVAL_QEXPR, "Error: Argument passed to def is not a q-expr, i.e., a bracketed list."); - LISPVAL_ASSERT(symbols->count == values->count, "Error: In function \"def\" both subarguments should have the same length"); + // Takes one argument: def { { a b } { 1 2 } } + lispval* source = v->cell[0]; + 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 } } "); + LISPVAL_ASSERT(source->cell[0]->type == LISPVAL_QEXPR, "Error: Argument passed to def should be a q expr with two q expressions as children: def { { a b } { 1 2 } } "); + LISPVAL_ASSERT(source->cell[1]->type == LISPVAL_QEXPR || source->cell[1]->type == LISPVAL_SEXPR, "Error: Argument passed to def should be a q expr with two q expressions as children: def { { a b } { 1 2 } } "); + LISPVAL_ASSERT(source->cell[0]->count == source->cell[1]->count, "Error: In function \"def\" both subarguments should have the same length"); + lispval* symbols = source->cell[0]; + lispval* values = source->cell[1]; for (int i = 0; i < symbols->count; i++) { - LISPVAL_ASSERT(symbols->cell[i]->type == LISPVAL_SYM, "Error: in function def, the first list of items should be of type symbol: def { a b } { 1 2 } "); + LISPVAL_ASSERT(symbols->cell[i]->type == LISPVAL_SYM, "Error: in function def, the first list of items should be of type symbol: def { { a b } { 1 2 } }"); if (VERBOSE) print_lispval_tree(symbols, 0); if (VERBOSE)