Distinguish #f and ().
authorJim Blandy <jimb@red-bean.com>
Thu, 3 Oct 1996 05:02:36 +0000 (05:02 +0000)
committerJim Blandy <jimb@red-bean.com>
Thu, 3 Oct 1996 05:02:36 +0000 (05:02 +0000)
* __scm.h: #undef SICP.
* pairs.h (SCM_EOL): Delete this definition, equating it with
SCM_BOOL_F.
* tags.h (SCM_EOL): Give it a new definition here; I think I found
the value it used to have.  Doc fixes, too.

libguile/__scm.h
libguile/pairs.h
libguile/tags.h

index 7fea1c8..73d0a70 100644 (file)
 \f
 /* {Unsupported Options}
  *
- * These must be defined.
+ * These must be defined as given here.
  */
 
 
 #define CCLO
-#define SICP
+
+/* Guile Scheme supports the #f/() distinction; Guile Lisp won't.  We
+   have horrible plans for their unification.  */
+#undef SICP
 
 \f
 
index bac63ae..fd07711 100644 (file)
@@ -89,7 +89,6 @@ typedef SCM  huge *SCMPTR;
 #define SCM_PTR_LE(x, y) (!SCM_PTR_GT(x, y))
 #define SCM_PTR_GE(x, y) (!SCM_PTR_LT(x, y))
 
-#define SCM_EOL                SCM_BOOL_F
 #define SCM_NULLP(x)           (SCM_EOL == (x))
 #define SCM_NNULLP(x)          (SCM_EOL != (x))
 
index 0c517a7..bbb8903 100644 (file)
@@ -80,27 +80,27 @@ typedef long SCM;
  *
  * Immediates -- meaning that the variable contains an entire Scheme object.
  *
- * Non-immediates -- meaning that the variable holds a (possibly tagged) pointer
- * into the cons pair heap.
- *
- * Non-objects are distinguished from other values by careful coding only (i.e.,
- * programmers must keep track of any SCM variables they create that don't contain
- * ordinary scheme values).
- *
- * All immediates and non-immediates must have a 0 in bit 0.  Only non-object
- * values can have a 1 in bit 0.   In some cases, bit 0 of a word in the heap
- * is used for the GC tag so during garbage collection, that bit might be 1
- * even in an immediate or non-immediate value.  In other cases, bit 0 of a word
- * in the heap is used to tag a pointer to a GLOC (VM global variable address)
- * or the header of a struct.   But whenever an SCM variable holds a normal Scheme
- * value, bit 0 is 0.
+ * Non-immediates -- meaning that the variable holds a (possibly
+ * tagged) pointer into the cons pair heap.
+ *
+ * Non-objects are distinguished from other values by careful coding
+ * only (i.e., programmers must keep track of any SCM variables they
+ * create that don't contain ordinary scheme values).
+ *
+ * All immediates and non-immediates must have a 0 in bit 0.  Only
+ * non-object values can have a 1 in bit 0.  In some cases, bit 0 of a
+ * word in the heap is used for the GC tag so during garbage
+ * collection, that bit might be 1 even in an immediate or
+ * non-immediate value.  In other cases, bit 0 of a word in the heap
+ * is used to tag a pointer to a GLOC (VM global variable address) or
+ * the header of a struct.  But whenever an SCM variable holds a
+ * normal Scheme value, bit 0 is 0.
  *
  * Immediates and non-immediates are distinguished by bits two and four.
  * Immediate values must have a 1 in at least one of those bits.  Does
  * this (or any other detail of tagging) seem arbitrary?  Try changing it!
  * (Not always impossible but it is fair to say that many details of tags
- * are mutually dependent).
- */
+ * are mutually dependent).  */
 
 #define SCM_IMP(x)             (6 & (int)(x))
 #define SCM_NIMP(x)            (!SCM_IMP(x))
@@ -464,7 +464,7 @@ enum scm_tags
 #define SCM_BOOL_T             SCM_MAKIFLAG(17)
 #define SCM_UNDEFINED          SCM_MAKIFLAG(18)
 #define SCM_EOF_VAL            SCM_MAKIFLAG(19)
-#define SCM_UNUSED_NIL_VALUE   SCM_MAKIFLAG(20)
+#define SCM_EOL                        SCM_MAKIFLAG(20)
 #define SCM_UNSPECIFIED                SCM_MAKIFLAG(21)