diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2024-04-04 07:33:54 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2024-04-04 07:33:54 -0700 |
commit | fba3be24f44ed3f9adb6d8371ac1b04427f6bd21 (patch) | |
tree | ef4ba9ec874f641421acd7e20a5a88976d507334 /lib.c | |
parent | 3f908279ba8cdc29302358323042df871a7963f9 (diff) | |
download | txr-fba3be24f44ed3f9adb6d8371ac1b04427f6bd21.tar.gz txr-fba3be24f44ed3f9adb6d8371ac1b04427f6bd21.tar.bz2 txr-fba3be24f44ed3f9adb6d8371ac1b04427f6bd21.zip |
New function: lcons-force.
* lib.[ch] (lcons_force): New function.
* eval.c (eval_init): Register lcons-force intrinsic.
* txr.1: Documented.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -4863,6 +4863,18 @@ val lcons_fun(val lcons) return lcons->lc.func; } +val lcons_force(val lcons) +{ + val iter = lcons; + + while (type(iter) == LCONS && iter->lc.func) { + lcons_force(car(iter)); + iter = us_cdr(iter); + } + + return lcons; +} + val list(val first, ...) { va_list vl; |