;; (import (chicken string))
;; (import (chicken format))
(define (f s)
(define (aux acc cs)
(if (null? cs)
(reverse-list->string acc)
(let ((c (car cs)) (cs (cdr cs)))
(cond
((not (eq? c #\ )) (aux (cons c acc) cs))
((and (not (null? acc)) (eq? (car acc) #\ )) (aux acc cs))
(else (aux (cons #\ (cons #\ (cons #\ (cons #\ acc)))) cs))))))
(aux '() (string->list s)))
(define (g s)
(format #t "\"~A\" -> \"~A\"~%" s (f s)))
(g "a b c")
(g " a ")
(g " a")
(g "a ")
(g " ")
(g "")
OzsgKGltcG9ydCAoY2hpY2tlbiBzdHJpbmcpKQo7OyAoaW1wb3J0IChjaGlja2VuIGZvcm1hdCkpCihkZWZpbmUgKGYgcykKICAoZGVmaW5lIChhdXggYWNjIGNzKQogICAgKGlmIChudWxsPyBjcykKICAgICAgICAocmV2ZXJzZS1saXN0LT5zdHJpbmcgYWNjKQogICAgICAgIChsZXQgKChjIChjYXIgY3MpKSAoY3MgKGNkciBjcykpKQogICAgICAgICAgKGNvbmQKICAgICAgICAgICAoKG5vdCAoZXE/IGMgI1wgKSkgKGF1eCAoY29ucyBjIGFjYykgY3MpKQogICAgICAgICAgICgoYW5kIChub3QgKG51bGw/IGFjYykpIChlcT8gKGNhciBhY2MpICNcICkpIChhdXggYWNjIGNzKSkKICAgICAgICAgICAoZWxzZSAoYXV4IChjb25zICNcIChjb25zICNcIChjb25zICNcIChjb25zICNcIGFjYykpKSkgY3MpKSkpKSkKICAoYXV4ICcoKSAoc3RyaW5nLT5saXN0IHMpKSkKKGRlZmluZSAoZyBzKQogIChmb3JtYXQgI3QgIlwifkFcIiAtPiBcIn5BXCJ+JSIgcyAoZiBzKSkpCihnICJhIGIgICAgIGMiKQooZyAiIGEgIikKKGcgIiAgYSIpCihnICJhICAiKQooZyAiICIpCihnICIiKQo=