19 lines
622 B
Scheme
19 lines
622 B
Scheme
(define (->string separator arg)
|
|
(cond ((string? arg) (string-append separator arg))
|
|
(else
|
|
(let* ((port (open-output-string))
|
|
(str (begin
|
|
(display separator port)
|
|
(display arg port)
|
|
(get-output-string port))))
|
|
(close-port port)
|
|
str))))
|
|
|
|
(define (concat separator . args)
|
|
(apply string-append
|
|
(cons
|
|
(string-copy
|
|
(->string separator (car args))
|
|
(string-length separator))
|
|
(map (lambda (arg) (->string separator arg)) (cdr args)))))
|