diff --git a/module/mes/M1.mes b/module/mes/M1.mes index 54091156..0f56ddef 100644 --- a/module/mes/M1.mes +++ b/module/mes/M1.mes @@ -84,6 +84,14 @@ (if hex? (string-append "!0x" (dec->hex o)) (string-append "!" (number->string o)))) +(define* (display-join o #:optional (sep "")) + (let loop ((o o)) + (when (pair? o) + (display (car o)) + (if (pair? (cdr o)) + (display sep)) + (loop (cdr o))))) + (define (object->M1 o) (stderr "dumping M1: object\n") (let* ((functions (assoc-ref o 'functions)) @@ -127,9 +135,11 @@ (cond ((eq? (car o) #:label) (display (string-append ":" (cadr o)))) ((eq? (car o) #:comment) - (display (string-append "\t\t\t\t\t# " (text->M1 (cadr o))))) + (display "\t\t\t\t\t# ") + (display (text->M1 (cadr o)))) ((or (string? (car o)) (symbol? (car o))) - (display (string-append "\t" (string-join (map text->M1 o) " ")))) + (display "\t" ) + (display-join (map text->M1 o) " ")) (else (error "line->M1 invalid line:" o))) (newline)) (display (string-append " :" name "\n") (current-error-port)) @@ -161,7 +171,7 @@ (not (find (cut memq <> '(#\nul #\backspace #\return #\" #\')) (list-head data (1- (length data))))) (not (any (lambda (ch) (>= (char->integer ch) #x80)) data))) (display (string-append "\"" (list->string (list-head data (1- (length data)))) "\""))) - (else (display (string-join (map text->M1 data) " ")))) + (else (display-join (map text->M1 data) " "))) (newline))) (display "M1: functions\n" (current-error-port)) (for-each write-function (filter cdr functions))