3 (defun list-join (list elt
)
11 (defun list-to-string (list)
12 (with-output-to-string (str)
14 (write-string el str
))))
16 (defun append-to-last (form elt
)
18 (concatenate 'string form elt
))
20 (let ((last (last form
)))
21 (if (stringp (car last
))
22 (rplaca last
(concatenate 'string
(car last
) elt
))
23 (append-to-last (car last
) elt
))
25 (t (error "unsupported form ~S" form
))))
27 (defun prepend-to-first (form elt
)
29 (concatenate 'string elt form
))
31 (let ((first (first form
)))
33 (rplaca form
(concatenate 'string elt first
))
34 (prepend-to-first first elt
))
36 (t (error "unsupported form ~S" form
))))
38 (defun string-join (strings elt
)
39 (list-to-string (list-join strings elt
)))
41 (defun val-to-string (val)
42 (cond ((stringp val
) val
)
43 ((symbolp val
) (string-downcase (symbol-name val
)))
44 (t (princ-to-string val
))))
46 (defun string-split (string separators
)
47 (do ((len (length string
))
52 (nreverse (if (> i last
)
53 (cons (subseq string last i
) res
)
55 (when (member (char string i
) separators
)
56 (push (subseq string last i
) res
)