summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2024-03-07 19:45:01 -0800
committerKaz Kylheku <kaz@kylheku.com>2024-03-07 19:45:01 -0800
commitfe1d0cb216b54a511ab9e3dc4f41b3ce09075997 (patch)
tree88c81759b5ba2efee3307509d4750523a5769283 /eval.c
parentb5d92c7b65b7c8efd3c62da070b52326989dfe0b (diff)
downloadtxr-fe1d0cb216b54a511ab9e3dc4f41b3ce09075997.tar.gz
txr-fe1d0cb216b54a511ab9e3dc4f41b3ce09075997.tar.bz2
txr-fe1d0cb216b54a511ab9e3dc4f41b3ce09075997.zip
New function: rangeref.
Because ranges can be iterated like sequences, and are identified as vector-like, they have to support indexing. However, ranges already have semantics as a function: with a sequence argument, they slice it. Let's put the semantics into a function called rangeref, so it can be coherently documented. * eval.c (eval_init): Register rangeref intrinsic. * lib.c (generic_funcall): Range as a function works in terms of rangeref. (ref): Handle RNG case via rangeref. (rangeref): New function. * lib.h (rangeref): Declared. * tests/012/seq.tl: New tests.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index e6edb5a0..095313ac 100644
--- a/eval.c
+++ b/eval.c
@@ -7830,6 +7830,7 @@ void eval_init(void)
reg_fun(intern(lit("to"), user_package), func_n1(to));
reg_fun(intern(lit("in-range"), user_package), func_n2(in_range));
reg_fun(intern(lit("in-range*"), user_package), func_n2(in_range_star));
+ reg_fun(intern(lit("rangeref"), user_package), func_n2(rangeref));
reg_fun(intern(lit("make-like"), user_package), func_n2(make_like));
reg_fun(intern(lit("nullify"), user_package), func_n1(nullify));