From 0049079be2255013051a2f654e3e8cb1eafe29d4 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Tue, 2 May 2023 10:09:41 -0400 Subject: [PATCH] feat: add list length function --- mumble | Bin 112668 -> 112860 bytes src/mumble.c | 17 ++++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/mumble b/mumble index 7997110a3c5ee4289ba86566c41376ecc5263509..23369bf4c35707e37aa6eb94780b407cad83e016 100755 GIT binary patch delta 32342 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 d<3cO)IM8%xa}Tz$l!QBS2count == 1, "Error: function len passed too many arguments"); + + lispval* source = v->cell[0]; + LISPVAL_ASSERT(source->type == LISPVAL_QEXPR, "Error: Argument passed to len is not a q-expr, i.e., a bracketed list."); + lispval* new = lispval_num(source->count); + return new; + // Returns something that should be freed later: yes. + // Returns something that doesn't share pointers with the input: yes. +} + lispval* evaluate_lispval(lispval* l); lispval* builtin_eval(lispval* v) { @@ -509,6 +522,8 @@ lispval* builtin_functions(char* func, lispval* v) return builtin_join(v); } else if (strcmp("eval", func) == 0) { return builtin_eval(v); + } else if (strcmp("len", func) == 0) { + return builtin_len(v); } else if (strstr("+-/*", func)) { return builtin_math_ops(func, v); } else { @@ -573,7 +588,7 @@ int main(int argc, char** argv) mpca_lang(MPCA_LANG_DEFAULT, " \ number : /-?[0-9]+\\.?([0-9]+)?/ ; \ symbol : \"list\" | \"head\" | \"tail\" \ - | \"eval\" | \"join\" \ + | \"eval\" | \"join\" | \"len\" \ | '+' | '-' | '*' | '/' ; \ sexpr : '(' * ')' ; \ qexpr : '{' * '}' ; \