mes: Fix display of closure.
authorJan Nieuwenhuizen <janneke@gnu.org>
Mon, 11 Dec 2017 06:06:21 +0000 (07:06 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Mon, 11 Dec 2017 06:06:21 +0000 (07:06 +0100)
* module/mes/display.mes (display): Drop extra ( at start of *closure*, *circ*.
* src/lib.c (display_helper): Likewise.

module/mes/display.mes
src/lib.c

index 51c70c775931a86a7498728cbeda91708ed5eeb5..1dcbc4b24fdf0577e09f2e81f064dae83b251367 100644 (file)
        ((pair? x)
         (if (not cont?) (write-char #\( port))
         (cond ((eq? (car x) '*circular*)
-               (display "(*circ* . #-1#)" port))
+               (display "*circ* . #-1#)" port))
               ((eq? (car x) '*closure*)
-               (display "(*closure* . #-1#)" port))
+               (display "*closure* . #-1#)" port))
               (#t
                (display (car x) port write?)
                (if (pair? (cdr x)) (d (cdr x) #t " ")
                    (if (and (cdr x) (not (null? (cdr x))))
                        (begin
                          (display " . " port)
-                         (display (cdr x) port write?))))
-               (if (not cont?) (write-char #\) port)))))
+                         (display (cdr x) port write?))))))
+        (if (not cont?) (write-char #\) port)))
        ((or (keyword? x) (special? x) (string? x) (symbol? x))
         (if (and (string? x) write?) (write-char #\" port))
         (if (keyword? x) (display "#:" port))
index 31916200afacc555563292d740289053b5b576c1..0ecbcc610c69b4052a2cc889b38d3cca21b87c86 100644 (file)
--- a/src/lib.c
+++ b/src/lib.c
@@ -38,6 +38,13 @@ display_helper (SCM x, int cont, char* sep, int fd)
         fputc (VALUE (x), fd);
         break;
       }
+    case TCLOSURE:
+      {
+        fputs ("#<closure ", fd);
+        display_helper (CDR (x), cont, "", fd);
+        fputs (">", fd);
+        break;
+      }
     case TFUNCTION:
       {
         fputs ("#<procedure ", fd);
@@ -55,7 +62,7 @@ display_helper (SCM x, int cont, char* sep, int fd)
     case TMACRO:
       {
         fputs ("#<macro ", fd);
-        display_helper (cdr (x), cont, "", fd);
+        display_helper (CDR (x), cont, "", fd);
         fputs (">", fd);
         break;
       }
@@ -67,14 +74,19 @@ display_helper (SCM x, int cont, char* sep, int fd)
     case TPAIR:
       {
         if (!cont) fputs ("(", fd);
-        if (x && x != cell_nil) fdisplay_ (CAR (x), fd);
-        if (CDR (x) && TYPE (CDR (x)) == TPAIR)
-          display_helper (CDR (x), 1, " ", fd);
-        else if (CDR (x) && CDR (x) != cell_nil)
+        if (CAR (x) == cell_circular)
+          fputs ("*circ* . #-1#", fd);
+        else
           {
-            if (TYPE (CDR (x)) != TPAIR)
-              fputs (" . ", fd);
-            fdisplay_ (CDR (x), fd);
+            if (x && x != cell_nil) fdisplay_ (CAR (x), fd);
+            if (CDR (x) && TYPE (CDR (x)) == TPAIR)
+              display_helper (CDR (x), 1, " ", fd);
+            else if (CDR (x) && CDR (x) != cell_nil)
+              {
+                if (TYPE (CDR (x)) != TPAIR)
+                  fputs (" . ", fd);
+                fdisplay_ (CDR (x), fd);
+              }
           }
         if (!cont) fputs (")", fd);
         break;