Closure is not a pair.
[mes.git] / type.c
diff --git a/type.c b/type.c
index ca28387ae520145fb38b307492617afa2eef4aba..c8d5933bb59851ac7bbe814f768cba79b6e7eb8a 100644 (file)
--- a/type.c
+++ b/type.c
@@ -26,6 +26,24 @@ char_p (SCM x)
   return TYPE (x) == CHAR ? cell_t : cell_f;
 }
 
+SCM
+closure_p (SCM x)
+{
+  return (TYPE (x) == PAIR && CAR (x) == cell_closure) ? cell_t : cell_f;
+}
+
+SCM
+mes_car (SCM x)
+{
+  return CAR (x);
+}
+
+SCM
+mes_cdr (SCM x)
+{
+  return CDR (x);
+}
+
 SCM
 keyword_p (SCM x)
 {
@@ -47,7 +65,7 @@ number_p (SCM x)
 SCM
 pair_p (SCM x)
 {
-  return TYPE (x) == PAIR ? cell_t : cell_f;
+  return (TYPE (x) == PAIR && CAR (x) != cell_closure) ? cell_t : cell_f;
 }
 
 SCM