From 293fef52359ed3691dd707392df53359c5969e5f Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Mon, 20 Jan 2014 16:43:54 +0900 Subject: [PATCH] add pic_list_ref --- include/picrin/pair.h | 2 ++ src/pair.c | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/include/picrin/pair.h b/include/picrin/pair.h index 1aed0d98..e42a041a 100644 --- a/include/picrin/pair.h +++ b/include/picrin/pair.h @@ -29,6 +29,8 @@ pic_value pic_cadr(pic_state *, pic_value); pic_value pic_cdar(pic_state *, pic_value); pic_value pic_cddr(pic_state *, pic_value); +pic_value pic_list_ref(pic_state *, pic_value, int); + #if defined(__cplusplus) } #endif diff --git a/src/pair.c b/src/pair.c index e6762221..b597e64f 100644 --- a/src/pair.c +++ b/src/pair.c @@ -180,6 +180,15 @@ pic_cddr(pic_state *pic, pic_value v) return pic_cdr(pic, pic_cdr(pic, v)); } +pic_value +pic_list_ref(pic_state *pic, pic_value list, int i) +{ + while (i-- > 0) { + list = pic_cdr(pic, list); + } + return pic_car(pic, list); +} + static pic_value pic_pair_pair_p(pic_state *pic) {