-/* Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997, 2000, 2001 Free Software Foundation, Inc.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
/* list manipulation */
-#include <stdio.h>
-
-#include <gh.h>
+#include "libguile/gh.h"
/* returns the length of a list */
unsigned long
-gh_list_length (SCM l)
+gh_length (SCM l)
{
- return gh_scm2ulong (scm_list_length (l));
+ return gh_scm2ulong (scm_length (l));
}
/* list operations */
+/* gh_list(SCM elt, ...) is implemented as a macro in gh.h. */
+
+/* gh_append() takes a args, which is a list of lists, and appends
+ them all together into a single list, which is returned. This is
+ equivalent to the Scheme procedure (append list1 list2 ...) */
+SCM
+gh_append (SCM args)
+{
+ return scm_append (args);
+}
+
+SCM
+gh_append2 (SCM l1, SCM l2)
+{
+ return scm_append (scm_list_2 (l1, l2));
+}
+
+SCM
+gh_append3(SCM l1, SCM l2, SCM l3)
+{
+ return scm_append (scm_list_3 (l1, l2, l3));
+}
+
+SCM
+gh_append4 (SCM l1, SCM l2, SCM l3, SCM l4)
+{
+ return scm_append (scm_list_4 (l1, l2, l3, l4));
+}
+
+/* gh_reverse() is defined as a macro in gh.h */
+/* gh_list_tail() is defined as a macro in gh.h */
+/* gh_list_ref() is defined as a macro in gh.h */
+/* gh_memq() is defined as a macro in gh.h */
+/* gh_memv() is defined as a macro in gh.h */
+/* gh_member() is defined as a macro in gh.h */
+/* gh_assq() is defined as a macro in gh.h */
+/* gh_assv() is defined as a macro in gh.h */
+/* gh_assoc() is defined as a macro in gh.h */
+
/* analogous to the Scheme cons operator */
SCM
gh_cons (SCM x, SCM y)
return scm_cons (x, y);
}
-/* gh_list(SCM elt, ...) is implemented as a macro in gh.h. */
-
/* analogous to the Scheme car operator */
SCM
gh_car (SCM x)
{
return SCM_CDDDR (x);
}
+
+/* equivalent to (set-car! pair value) */
+SCM
+gh_set_car_x(SCM pair, SCM value)
+{
+ return scm_set_car_x(pair, value);
+}
+
+/* equivalent to (set-cdr! pair value) */
+SCM
+gh_set_cdr_x(SCM pair, SCM value)
+{
+ return scm_set_cdr_x(pair, value);
+}
+
+/*
+ Local Variables:
+ c-file-style: "gnu"
+ End:
+*/