Author: yamakenz
Date: Thu Jun 14 15:05:39 2007
New Revision: 4595
Modified:
sigscheme-trunk/src/module-srfi1.c
sigscheme-trunk/src/sigscheme.h
Log:
* This commit remove the broken or not validated SRFI-1 procedure definitions
to be replaced with srfi-1.scm. Some efficiency-sensitive ones are remained
but needed to be rewritten
* src/sigscheme.h
- (scm_p_srfi1_xcons, scm_p_srfi1_consstar, scm_p_srfi1_make_list,
scm_p_srfi1_list_tabulate, scm_p_srfi1_list_copy,
scm_p_srfi1_circular_list, scm_p_srfi1_iota, scm_p_srfi1_not_pairp,
scm_p_srfi1_null_listp, scm_p_srfi1_listequal, scm_p_srfi1_first,
scm_p_srfi1_second, scm_p_srfi1_third, scm_p_srfi1_fourth,
scm_p_srfi1_fifth, scm_p_srfi1_sixth, scm_p_srfi1_seventh,
scm_p_srfi1_eighth, scm_p_srfi1_ninth, scm_p_srfi1_tenth,
scm_p_srfi1_carpluscdr, scm_p_srfi1_take, scm_p_srfi1_take_right,
scm_p_srfi1_drop_right, scm_p_srfi1_takex, scm_p_srfi1_drop_rightx,
scm_p_srfi1_split_at, scm_p_srfi1_split_atx, scm_p_srfi1_last,
scm_p_srfi1_concatenate): Removed
* src/module-srfi1.c
- (scm_p_srfi1_xcons, scm_p_srfi1_consstar, scm_p_srfi1_make_list,
scm_p_srfi1_list_tabulate, scm_p_srfi1_list_copy,
scm_p_srfi1_circular_list, scm_p_srfi1_iota, scm_p_srfi1_not_pairp,
scm_p_srfi1_null_listp, scm_p_srfi1_listequal, scm_p_srfi1_first,
scm_p_srfi1_second, scm_p_srfi1_third, scm_p_srfi1_fourth,
scm_p_srfi1_fifth, scm_p_srfi1_sixth, scm_p_srfi1_seventh,
scm_p_srfi1_eighth, scm_p_srfi1_ninth, scm_p_srfi1_tenth,
scm_p_srfi1_carpluscdr, scm_p_srfi1_take, scm_p_srfi1_take_right,
scm_p_srfi1_drop_right, scm_p_srfi1_takex, scm_p_srfi1_drop_rightx,
scm_p_srfi1_split_at, scm_p_srfi1_split_atx, scm_p_srfi1_last,
scm_p_srfi1_concatenate): Removed
Modified: sigscheme-trunk/src/module-srfi1.c
==============================================================================
--- sigscheme-trunk/src/module-srfi1.c (original)
+++ sigscheme-trunk/src/module-srfi1.c Thu Jun 14 15:05:39 2007
@@ -71,182 +71,7 @@
}
/*===========================================================================
- SRFI1 : The procedures : Constructors
-===========================================================================*/
-SCM_EXPORT ScmObj
-scm_p_srfi1_xcons(ScmObj a, ScmObj b)
-{
- DECLARE_FUNCTION("xcons", procedure_fixed_2);
- return CONS(b, a);
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_consstar(ScmObj args)
-{
- ScmObj tail_cons = SCM_FALSE;
- ScmObj prev_last = args;
- DECLARE_FUNCTION("cons*", procedure_variadic_0);
-
- if (NULLP(CDR(args)))
- return CAR(args);
-
- for (tail_cons = CDR(args); !NULLP(tail_cons); tail_cons = CDR(tail_cons))
{
- /* check tail cons cell */
- if (NULLP(CDR(tail_cons))) {
- SET_CDR(prev_last, CAR(tail_cons));
- }
-
- prev_last = tail_cons;
- }
-
- return args;
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_make_list(ScmObj length, ScmObj args)
-{
- ScmObj filler;
- ScmObj head = SCM_NULL;
- scm_int_t len = 0;
- scm_int_t i = 0;
- DECLARE_FUNCTION("make-list", procedure_variadic_1);
-
- ENSURE_INT(length);
-
- len = SCM_INT_VALUE(length);
-
- /* get filler if available */
- if (!NULLP(args))
- filler = CAR(args);
- else
- filler = SCM_FALSE;
-
- /* then create list */
- for (i = len; 0 < i; i--) {
- head = CONS(filler, head);
- }
-
- return head;
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_list_tabulate(ScmObj _n, ScmObj args)
-{
- ScmObj proc = SCM_FALSE;
- ScmObj head = SCM_NULL;
- ScmObj num = SCM_FALSE;
- scm_int_t n = 0;
- scm_int_t i = 0;
- DECLARE_FUNCTION("list-tabulate", procedure_variadic_1);
-
- ENSURE_INT(_n);
-
- /* get n */
- n = SCM_INT_VALUE(_n);
-
- /* get init_proc if available */
- if (!NULLP(args))
- proc = CAR(args);
-
- /* then create list */
- for (i = n; 0 < i; i--) {
- num = MAKE_INT(i - 1);
-
- if (!NULLP(proc))
- num = scm_call(proc, LIST_1(num));
-
- head = CONS(num, head);
- }
-
- return head;
-}
-
-/* FIXME: SRFI-1 list-copy is a shallow copy */
-SCM_EXPORT ScmObj
-scm_p_srfi1_list_copy(ScmObj lst)
-{
- ScmObj head = SCM_NULL;
- ScmObj tail = SCM_FALSE;
- ScmObj obj = SCM_FALSE;
- DECLARE_FUNCTION("list-copy", procedure_fixed_1);
-
- /* broken */
-#if 0
- if (FALSEP(scm_p_listp(lst)))
- ERR_OBJ("list required but got", lst);
-
- for (; !NULLP(lst); lst = CDR(lst)) {
- obj = CAR(lst);
-
- /* further copy */
- if (CONSP(obj))
- obj = scm_p_srfi1_list_copy(obj);
-
- /* then create new cons */
- obj = CONS(obj, SCM_NULL);
- if (TRUEP(tail)) {
- SET_CDR(tail, obj);
- tail = obj;
- } else {
- head = obj;
- tail = head;
- }
- }
-
- return head;
-#endif
- ERR("bug: broken implementation");
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_circular_list(ScmObj args)
-{
- DECLARE_FUNCTION("circular-list", procedure_variadic_0);
-
- SET_CDR(scm_p_srfi1_last_pair(args), args);
- return args;
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_iota(ScmObj scm_count, ScmObj args)
-{
- ScmObj scm_start = SCM_FALSE;
- ScmObj scm_step = SCM_FALSE;
- ScmObj head = SCM_NULL;
- scm_int_t count = 0;
- scm_int_t start = 0;
- scm_int_t step = 0;
- scm_int_t i = 0;
- DECLARE_FUNCTION("iota", procedure_variadic_1);
-
- /* get params */
- if (!NULLP(args))
- scm_start = CAR(args);
-
- if (TRUEP(scm_start) && !NULLP(CDR(args)))
- scm_step = CAR(CDR(args));
-
- /* param type check */
- ENSURE_INT(scm_count);
- if (TRUEP(scm_start))
- ENSURE_INT(scm_start);
- if (TRUEP(scm_step))
- ENSURE_INT(scm_step);
-
- /* now create list */
- count = SCM_INT_VALUE(scm_count);
- start = FALSEP(scm_start) ? 0 : SCM_INT_VALUE(scm_start);
- step = FALSEP(scm_step) ? 1 : SCM_INT_VALUE(scm_step);
-
- for (i = count - 1; 0 <= i; i--) {
- head = CONS(MAKE_INT(start + i * step), head);
- }
-
- return head;
-}
-
-/*===========================================================================
- SRFI1 : The procedures : Predicates
+ Predicates
===========================================================================*/
SCM_EXPORT ScmObj
scm_p_srfi1_proper_listp(ScmObj obj)
@@ -272,185 +97,9 @@
return MAKE_BOOL(DOTTED_LISTP(obj));
}
-SCM_EXPORT ScmObj
-scm_p_srfi1_not_pairp(ScmObj obj)
-{
- DECLARE_FUNCTION("not-pair?", procedure_fixed_1);
-
- return MAKE_BOOL(!CONSP(obj));
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_null_listp(ScmObj lst)
-{
- scm_int_t len;
- DECLARE_FUNCTION("null-list?", procedure_fixed_1);
-
- len = scm_length(lst);
- if (!SCM_LISTLEN_PROPERP(len) && !SCM_LISTLEN_CIRCULARP(len))
- ERR_OBJ("proper or circular list required but got", lst);
-
- return MAKE_BOOL(NULLP(lst));
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_listequal(ScmObj eqproc, ScmObj args)
-{
- ScmObj first_lst = SCM_FALSE;
- DECLARE_FUNCTION("list=", procedure_variadic_1);
-
- if (NULLP(args))
- return SCM_TRUE;
-
- first_lst = CAR(args);
- args = CDR(args);
-
- if (NULLP(args))
- return SCM_TRUE;
-
- for (; !NULLP(args); args = CDR(args)) {
- if (FALSEP(compare_list(eqproc, first_lst, CAR(args))))
- return SCM_FALSE;
- }
-
- return SCM_TRUE;
-}
-
-static ScmObj
-compare_list(ScmObj eqproc, ScmObj lst1, ScmObj lst2)
-{
-#define CHECK_LIST_EQUALITY_WITH_EQPROC(eqproc, obj1, obj2) \
- (scm_call(eqproc, \
- LIST_2(obj1, obj2)))
-
- ScmObj ret_cmp = SCM_FALSE;
-
- for (; !NULLP(lst1); lst1 = CDR(lst1), lst2 = CDR(lst2)) {
- /* check contents */
- ret_cmp = CHECK_LIST_EQUALITY_WITH_EQPROC(eqproc, CAR(lst1),
CAR(lst2));
- if (FALSEP(ret_cmp))
- return SCM_FALSE;
-
- /* check next cdr's type */
- if (SCM_TYPE(CDR(lst1)) != SCM_TYPE(CDR(lst2)))
- return SCM_FALSE;
-
- /* check dot pair */
- if (!CONSP(CDR(lst1))) {
- return CHECK_LIST_EQUALITY_WITH_EQPROC(eqproc, CDR(lst1),
CDR(lst2));
- }
- }
- return SCM_TRUE;
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_first(ScmObj lst)
-{
- DECLARE_FUNCTION("first", procedure_fixed_1);
- return scm_p_car(lst);
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_second(ScmObj lst)
-{
- DECLARE_FUNCTION("second", procedure_fixed_1);
- return scm_p_cadr(lst);
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_third(ScmObj lst)
-{
- DECLARE_FUNCTION("third", procedure_fixed_1);
- return scm_p_caddr(lst);
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_fourth(ScmObj lst)
-{
- DECLARE_FUNCTION("fourth", procedure_fixed_1);
- return scm_p_cadddr(lst);
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_fifth(ScmObj lst)
-{
- DECLARE_FUNCTION("fifth", procedure_fixed_1);
- return scm_p_car(scm_p_cddddr(lst));
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_sixth(ScmObj lst)
-{
- DECLARE_FUNCTION("sixth", procedure_fixed_1);
- return scm_p_cadr(scm_p_cddddr(lst));
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_seventh(ScmObj lst)
-{
- DECLARE_FUNCTION("seventh", procedure_fixed_1);
- return scm_p_caddr(scm_p_cddddr(lst));
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_eighth(ScmObj lst)
-{
- DECLARE_FUNCTION("eighth", procedure_fixed_1);
- return scm_p_cadddr(scm_p_cddddr(lst));
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_ninth(ScmObj lst)
-{
- DECLARE_FUNCTION("ninth", procedure_fixed_1);
- return scm_p_car(scm_p_cddddr(scm_p_cddddr(lst)));
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_tenth(ScmObj lst)
-{
- DECLARE_FUNCTION("tenth", procedure_fixed_1);
- return scm_p_cadr(scm_p_cddddr(scm_p_cddddr(lst)));
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_carpluscdr(ScmObj lst)
-{
- DECLARE_FUNCTION("car+cdr", procedure_fixed_1);
- return scm_p_values(LIST_2(CAR(lst), CDR(lst)));
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_take(ScmObj lst, ScmObj scm_idx)
-{
- ScmObj tmp = lst;
- ScmObj ret = SCM_FALSE;
- ScmObj ret_tail = SCM_FALSE;
- scm_int_t idx = 0;
- scm_int_t i;
- DECLARE_FUNCTION("take", procedure_fixed_2);
-
- ENSURE_INT(scm_idx);
-
- idx = SCM_INT_VALUE(scm_idx);
- for (i = 0; i < idx; i++) {
- if (SCM_NULLP(tmp))
- ERR_OBJ("illegal index is specified for", lst);
-
- if (i != 0) {
- SET_CDR(ret_tail, CONS(CAR(tmp), SCM_NULL));
- ret_tail = CDR(ret_tail);
- } else {
- ret = CONS(CAR(tmp), SCM_NULL);
- ret_tail = ret;
- }
-
- tmp = CDR(tmp);
- }
-
- return ret;
-}
-
+/*===========================================================================
+ Selectors
+===========================================================================*/
SCM_EXPORT ScmObj
scm_p_srfi1_drop(ScmObj lst, ScmObj scm_idx)
{
@@ -473,119 +122,6 @@
}
SCM_EXPORT ScmObj
-scm_p_srfi1_take_right(ScmObj lst, ScmObj scm_elem)
-{
- ScmObj tmp = lst;
- scm_int_t len = 0;
- DECLARE_FUNCTION("take-right", procedure_fixed_2);
-
- ENSURE_INT(scm_elem);
-
- for (; CONSP(tmp); tmp = CDR(tmp))
- len++;
-
- len -= SCM_INT_VALUE(scm_elem);
-
- return scm_p_srfi1_drop(lst, MAKE_INT(len));
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_drop_right(ScmObj lst, ScmObj scm_elem)
-{
- ScmObj tmp = lst;
- scm_int_t len = 0;
- DECLARE_FUNCTION("drop-right", procedure_fixed_2);
-
- ENSURE_INT(scm_elem);
-
- for (; CONSP(tmp); tmp = CDR(tmp))
- len++;
-
- len -= SCM_INT_VALUE(scm_elem);
-
- return scm_p_srfi1_take(lst, MAKE_INT(len));
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_takex(ScmObj lst, ScmObj scm_idx)
-{
- ScmObj tmp = lst;
- scm_int_t idx = 0;
- scm_int_t i;
- DECLARE_FUNCTION("take!", procedure_fixed_2);
-
- ENSURE_INT(scm_idx);
-
- idx = SCM_INT_VALUE(scm_idx);
-
- for (i = 0; i < idx - 1; i++) {
- tmp = CDR(tmp);
- }
-
- ENSURE_MUTABLE_CONS(tmp);
- SET_CDR(tmp, SCM_NULL);
-
- return lst;
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_drop_rightx(ScmObj lst, ScmObj scm_idx)
-{
- ScmObj tmp = lst;
- scm_int_t len = 0;
- scm_int_t i;
- DECLARE_FUNCTION("drop-right!", procedure_fixed_2);
-
- ENSURE_INT(scm_idx);
-
- for (; CONSP(tmp); tmp = CDR(tmp))
- len++;
-
- len -= SCM_INT_VALUE(scm_idx);
-
- tmp = lst;
- for (i = 0; i < len - 1; i++) {
- tmp = CDR(tmp);
- }
-
- ENSURE_MUTABLE_CONS(tmp);
- SET_CDR(tmp, SCM_NULL);
-
- return lst;
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_split_at(ScmObj lst, ScmObj idx)
-{
- DECLARE_FUNCTION("split-at", procedure_fixed_2);
-
- return scm_p_values(LIST_2(scm_p_srfi1_take(lst, idx),
- scm_p_srfi1_drop(lst, idx)));
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_split_atx(ScmObj lst, ScmObj idx)
-{
- ScmObj drop = scm_p_srfi1_drop(lst, idx);
- DECLARE_FUNCTION("split-at!", procedure_fixed_2);
-
- return scm_p_values(LIST_2(scm_p_srfi1_takex(lst, idx),
- drop));
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_last(ScmObj lst)
-{
- DECLARE_FUNCTION("last", procedure_fixed_1);
-
- /* sanity check */
- if (NULLP(lst))
- ERR_OBJ("non-empty, proper list is required but got", lst);
-
- return CAR(scm_p_srfi1_last_pair(lst));
-}
-
-SCM_EXPORT ScmObj
scm_p_srfi1_last_pair(ScmObj lst)
{
DECLARE_FUNCTION("last-pair", procedure_fixed_1);
@@ -601,7 +137,7 @@
}
/*===========================================================================
- SRFI1 : The procedures : Miscellaneous
+ Miscellaneous
===========================================================================*/
SCM_EXPORT ScmObj
scm_p_srfi1_lengthplus(ScmObj lst)
@@ -617,18 +153,4 @@
ERR_OBJ("proper or circular list required but got", lst);
return (SCM_LISTLEN_PROPERP(len)) ? MAKE_INT(len) : SCM_FALSE;
-}
-
-SCM_EXPORT ScmObj
-scm_p_srfi1_concatenate(ScmObj args)
-{
- ScmObj lsts_of_lst = CAR(args);
- DECLARE_FUNCTION("concatenate", procedure_variadic_0);
-
-#if SCM_STRICT_ARGCHECK
- if (!NULLP(CDR(args)))
- ERR_OBJ("superfluous arguments", args);
-#endif
-
- return scm_p_append(lsts_of_lst);
}
Modified: sigscheme-trunk/src/sigscheme.h
==============================================================================
--- sigscheme-trunk/src/sigscheme.h (original)
+++ sigscheme-trunk/src/sigscheme.h Thu Jun 14 15:05:39 2007
@@ -1673,42 +1673,12 @@
/* module-srfi1.c */
#if SCM_USE_SRFI1
-SCM_EXPORT ScmObj scm_p_srfi1_xcons(ScmObj a, ScmObj b);
-SCM_EXPORT ScmObj scm_p_srfi1_consstar(ScmObj args);
-SCM_EXPORT ScmObj scm_p_srfi1_make_list(ScmObj length, ScmObj args);
-SCM_EXPORT ScmObj scm_p_srfi1_list_tabulate(ScmObj _n, ScmObj args);
-SCM_EXPORT ScmObj scm_p_srfi1_list_copy(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_circular_list(ScmObj args);
-SCM_EXPORT ScmObj scm_p_srfi1_iota(ScmObj scm_count, ScmObj args);
SCM_EXPORT ScmObj scm_p_srfi1_proper_listp(ScmObj obj);
SCM_EXPORT ScmObj scm_p_srfi1_circular_listp(ScmObj obj);
SCM_EXPORT ScmObj scm_p_srfi1_dotted_listp(ScmObj obj);
-SCM_EXPORT ScmObj scm_p_srfi1_not_pairp(ScmObj obj);
-SCM_EXPORT ScmObj scm_p_srfi1_null_listp(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_listequal(ScmObj eqproc, ScmObj args);
-SCM_EXPORT ScmObj scm_p_srfi1_first(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_second(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_third(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_fourth(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_fifth(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_sixth(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_seventh(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_eighth(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_ninth(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_tenth(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_carpluscdr(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_take(ScmObj lst, ScmObj scm_idx);
SCM_EXPORT ScmObj scm_p_srfi1_drop(ScmObj lst, ScmObj scm_idx);
-SCM_EXPORT ScmObj scm_p_srfi1_take_right(ScmObj lst, ScmObj scm_elem);
-SCM_EXPORT ScmObj scm_p_srfi1_drop_right(ScmObj lst, ScmObj scm_elem);
-SCM_EXPORT ScmObj scm_p_srfi1_takex(ScmObj lst, ScmObj scm_idx);
-SCM_EXPORT ScmObj scm_p_srfi1_drop_rightx(ScmObj lst, ScmObj scm_idx);
-SCM_EXPORT ScmObj scm_p_srfi1_split_at(ScmObj lst, ScmObj idx);
-SCM_EXPORT ScmObj scm_p_srfi1_split_atx(ScmObj lst, ScmObj idx);
-SCM_EXPORT ScmObj scm_p_srfi1_last(ScmObj lst);
SCM_EXPORT ScmObj scm_p_srfi1_last_pair(ScmObj lst);
SCM_EXPORT ScmObj scm_p_srfi1_lengthplus(ScmObj lst);
-SCM_EXPORT ScmObj scm_p_srfi1_concatenate(ScmObj args);
#endif /* SCM_USE_SRFI1 */
/* module-srfi2.c */