1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 11:50:28 +02:00
guile/libguile/list.h
Dirk Herrmann 212e58ede8 * list.[ch] (scm_i_finite_list_copy): New internal function to
copy lists that are known to be finite (though not necessarily
	proper).

	* debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
	a closure's argument list like an expression of a body.

	* eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
	unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
	unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
	unmemoize_letrec, unmemoize_letstar, unmemoize_or,
	unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
	unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
	unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
	unmemoize_builtin_macro): New static functions and symbols.

	(scm_unmemocopy): Rewritten in terms of the above.  scm_unmemocopy
	now has a slightly different meaning: The memoized form that is
	receives as its argument is now interpreted as a sequence of
	expressions from a body.

	(unmemocar, scm_unmemocar): Since the whole functionality of
	unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
	has its old content back and is deprecated, while unmemocar has
	been removed.

	(SCM_BIT7): Removed.

	(CEVAL): For unmemoizing a single expression, call
	unmemoize_expression instead of scm_unmemocopy, which now expects
	a sequence of body expressions.  Eliminated unnecessary empty
	environment frame when executing let* forms.  Eliminated
	unmemoization step from evaluator.
2004-06-06 07:46:18 +00:00

82 lines
2.7 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* classes: h_files */
#ifndef SCM_LIST_H
#define SCM_LIST_H
/* Copyright (C) 1995,1996,1997,2000,2001,2003,2004
* Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "libguile/__scm.h"
SCM_API SCM scm_list_1 (SCM e1);
SCM_API SCM scm_list_2 (SCM e1, SCM e2);
SCM_API SCM scm_list_3 (SCM e1, SCM e2, SCM e3);
SCM_API SCM scm_list_4 (SCM e1, SCM e2, SCM e3, SCM e4);
SCM_API SCM scm_list_5 (SCM e1, SCM e2, SCM e3, SCM e4, SCM e5);
SCM_API SCM scm_list_n (SCM elt, ...);
SCM_API SCM scm_list_head (SCM lst, SCM k);
SCM_API SCM scm_list (SCM objs);
SCM_API SCM scm_cons_star (SCM arg, SCM objs);
SCM_API SCM scm_null_p (SCM x);
SCM_API SCM scm_list_p (SCM x);
SCM_API long scm_ilength (SCM sx);
SCM_API SCM scm_length (SCM x);
SCM_API SCM scm_append (SCM args);
SCM_API SCM scm_append_x (SCM args);
SCM_API SCM scm_reverse (SCM lst);
SCM_API SCM scm_reverse_x (SCM lst, SCM newtail);
SCM_API SCM scm_list_ref (SCM lst, SCM k);
SCM_API SCM scm_list_set_x (SCM lst, SCM k, SCM val);
SCM_API SCM scm_list_cdr_set_x (SCM lst, SCM k, SCM val);
SCM_API SCM scm_last_pair (SCM sx);
SCM_API SCM scm_list_tail (SCM lst, SCM k);
SCM_API SCM scm_c_memq (SCM x, SCM lst);
SCM_API SCM scm_memq (SCM x, SCM lst);
SCM_API SCM scm_memv (SCM x, SCM lst);
SCM_API SCM scm_member (SCM x, SCM lst);
SCM_API SCM scm_delq_x (SCM item, SCM lst);
SCM_API SCM scm_delv_x (SCM item, SCM lst);
SCM_API SCM scm_delete_x (SCM item, SCM lst);
SCM_API SCM scm_list_copy (SCM lst);
SCM_API SCM scm_delq (SCM item, SCM lst);
SCM_API SCM scm_delv (SCM item, SCM lst);
SCM_API SCM scm_delete (SCM item, SCM lst);
SCM_API SCM scm_delq1_x (SCM item, SCM lst);
SCM_API SCM scm_delv1_x (SCM item, SCM lst);
SCM_API SCM scm_delete1_x (SCM item, SCM lst);
SCM_API SCM scm_filter (SCM pred, SCM list);
SCM_API SCM scm_filter_x (SCM pred, SCM list);
/* Guile internal functions */
SCM_API SCM scm_i_finite_list_copy (SCM /* a list known to be finite */);
SCM_API void scm_init_list (void);
#endif /* SCM_LIST_H */
/*
Local Variables:
c-file-style: "gnu"
End:
*/