;; (import (chicken string))
;; (import (chicken format))
(define (chunk eq? xs)
(define (aux acc xs)
(cond
((null? xs) (reverse acc))
((or (null? acc) (not (eq? (caar acc) (car xs)))) (aux (cons (list (car xs)) acc) (cdr xs)))
(else (aux (cons (cons (car xs) (car acc)) (cdr acc)) (cdr xs)))))
(aux '() xs))
(define f
(compose
(cut apply string-append <>)
(cut flatten <>)
(cut map (lambda (ss) (if (equal? (car ss) " ") " " ss)) <>)
(cut chunk equal? <>)
(cut string-chop <> 1)))
(define (g s)
(format #t "\"~A\" -> \"~A\"~%" s (f s)))
(g "a b c")
(g " a ")
(g " a")
(g "a ")
(g " ")
(g "")
OzsgKGltcG9ydCAoY2hpY2tlbiBzdHJpbmcpKQo7OyAoaW1wb3J0IChjaGlja2VuIGZvcm1hdCkpCihkZWZpbmUgKGNodW5rIGVxPyB4cykKICAoZGVmaW5lIChhdXggYWNjIHhzKQogICAgKGNvbmQKICAgICAoKG51bGw/IHhzKSAocmV2ZXJzZSBhY2MpKQogICAgICgob3IgKG51bGw/IGFjYykgKG5vdCAoZXE/IChjYWFyIGFjYykgKGNhciB4cykpKSkgKGF1eCAoY29ucyAobGlzdCAoY2FyIHhzKSkgYWNjKSAoY2RyIHhzKSkpCiAgICAgKGVsc2UgKGF1eCAoY29ucyAoY29ucyAoY2FyIHhzKSAoY2FyIGFjYykpIChjZHIgYWNjKSkgKGNkciB4cykpKSkpCiAgKGF1eCAnKCkgeHMpKQooZGVmaW5lIGYKICAoY29tcG9zZQogICAoY3V0IGFwcGx5IHN0cmluZy1hcHBlbmQgPD4pCiAgIChjdXQgZmxhdHRlbiA8PikKICAgKGN1dCBtYXAgKGxhbWJkYSAoc3MpIChpZiAoZXF1YWw/IChjYXIgc3MpICIgIikgIiAgICAiIHNzKSkgPD4pCiAgIChjdXQgY2h1bmsgZXF1YWw/IDw+KQogICAoY3V0IHN0cmluZy1jaG9wIDw+IDEpKSkKKGRlZmluZSAoZyBzKQogIChmb3JtYXQgI3QgIlwifkFcIiAtPiBcIn5BXCJ+JSIgcyAoZiBzKSkpCihnICJhIGIgICAgIGMiKQooZyAiIGEgIikKKGcgIiAgYSIpCihnICJhICAiKQooZyAiICIpCihnICIiKQo=