summaryrefslogtreecommitdiff
path: root/src/lisp/ao_lisp_cons.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2017-11-19 21:07:00 -0800
committerKeith Packard <keithp@keithp.com>2017-11-19 21:07:00 -0800
commit6d2f271a45759bd792d299f04a424d3382ef4798 (patch)
treea8a3e2f8538ab70a828f47f3ed87e62e2a0c5adc /src/lisp/ao_lisp_cons.c
parent12a1f6ad48f2b924f71239effeb90afca75a090f (diff)
altos/lisp: Add floats
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/lisp/ao_lisp_cons.c')
-rw-r--r--src/lisp/ao_lisp_cons.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lisp/ao_lisp_cons.c b/src/lisp/ao_lisp_cons.c
index 9379597c..c70aa1ca 100644
--- a/src/lisp/ao_lisp_cons.c
+++ b/src/lisp/ao_lisp_cons.c
@@ -105,6 +105,19 @@ ao_lisp_cons_cons(ao_poly car, ao_poly cdr)
return cons;
}
+struct ao_lisp_cons *
+ao_lisp_cons_cdr(struct ao_lisp_cons *cons)
+{
+ ao_poly cdr = cons->cdr;
+ if (cdr == AO_LISP_NIL)
+ return NULL;
+ if (ao_lisp_poly_type(cdr) != AO_LISP_CONS) {
+ (void) ao_lisp_error(AO_LISP_INVALID, "improper list");
+ return NULL;
+ }
+ return ao_lisp_poly_cons(cdr);
+}
+
ao_poly
ao_lisp__cons(ao_poly car, ao_poly cdr)
{