scm: Do not quote list of strings.
authorJan Nieuwenhuizen <janneke@gnu.org>
Mon, 3 Apr 2017 05:19:38 +0000 (07:19 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Mon, 3 Apr 2017 05:19:38 +0000 (07:19 +0200)
* module/mes/display.mes (display): Check value of write?, fixes
  quoting display string.

module/mes/display.mes

index 139d8e98f610ec760a1e9be7c2d389dfdfe2f31d..6ccc645e17b5c12b55bd2d46b6da25c7621ef06d 100644 (file)
@@ -42,7 +42,7 @@
 
 (define (display x . rest)
   (let* ((port (if (null? rest) (current-output-port) (car rest)))
-         (write? (and (pair? rest) (pair? (cdr rest)))))
+         (write? (and (pair? rest) (pair? (cdr rest)) (cadr rest))))
 
     (define-macro (cut f slot n1)
       `(lambda (slot) (,f slot ,n1)))
@@ -50,7 +50,7 @@
     (define-macro (cut2 f slot n1 n2)
       `(lambda (slot) (,f slot ,n1 ,n2)))
 
-    (define (display-char x write? port)
+    (define (display-char x port write?)
       (cond ((and write? (or (eq? x #\") (eq? x #\\)))
              (write-char #\\ port)
              (write-char x port))
        ((or (keyword? x) (special? x) (string? x) (symbol? x))
         (if (and (string? x) write?) (write-char #\" port))
         (if (keyword? x) (display "#:" port))
-        (for-each (cut2 display-char <> write? port) (string->list x))
+        (for-each (cut2 display-char <> port write?) (string->list x))
         (if (and (string? x) write?) (write-char #\" port)))
        ((vector? x)
         (display "#(" port)