From 2dfa52e475fbc5614f92cfbc42d5b25fc5b8eff2 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Fri, 19 Dec 2025 21:01:18 -0500 Subject: Add support for keywords and variadic arguments --- include/lcq/pit/library.h | 1 + include/lcq/pit/runtime.h | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'include/lcq') diff --git a/include/lcq/pit/library.h b/include/lcq/pit/library.h index ff325dc..6bca3a6 100644 --- a/include/lcq/pit/library.h +++ b/include/lcq/pit/library.h @@ -5,6 +5,7 @@ void pit_install_library_essential(pit_runtime *rt); void pit_install_library_io(pit_runtime *rt); +void pit_install_library_plist(pit_runtime *rt); void pit_install_library_bytestring(pit_runtime *rt); #endif diff --git a/include/lcq/pit/runtime.h b/include/lcq/pit/runtime.h index a8b6593..32bf198 100644 --- a/include/lcq/pit/runtime.h +++ b/include/lcq/pit/runtime.h @@ -60,7 +60,7 @@ typedef struct { /* "heavy" values, the targets of refs */ struct { pit_value car, cdr; } cons; struct { pit_value *data; i64 len; } array; struct { u8 *data; i64 len; } bytes; - struct { pit_value env; pit_value args; pit_value body; } func; + struct { pit_value env; pit_value args; pit_value arg_rest_nm; pit_value body; } func; pit_nativefunc nativefunc; struct { pit_value tag; void *data; } nativedata; } in; @@ -70,7 +70,7 @@ typedef struct { pit_value name; /* ref to bytestring */ pit_value value; /* ref to cell */ pit_value function; /* ref to cell */ - bool is_macro, is_special_form; + bool is_macro, is_special_form, is_keyword; } pit_symtab_entry; /* "programs"; vectors of "instructions" for a very simple VM used by the evaluator */ @@ -206,7 +206,6 @@ pit_value pit_apply(pit_runtime *rt, pit_value f, pit_value args); /* working with native data */ pit_value pit_nativedata_new(pit_runtime *rt, pit_value tag, void *d); - /* evaluation! */ pit_value pit_expand_macros(pit_runtime *rt, pit_value top); pit_value pit_eval(pit_runtime *rt, pit_value e); -- cgit v1.2.3