(str ..args)
  args: zero or more arguments (any type)
  returns a str

Constructs a string.

Each argument is converted into text and concatenated, with a single space character inserted between adjacent non-character, non-string arguments. Finally, that text is stored in a newly-allocated, mutable string, which is returned.

(ensure (eq? (str 5) "5"))
(ensure (eq? (str 1 2 3) "1 2 3"))
(ensure (eq? (str "Moonsong") "Moonsong"))
(ensure (eq? (str "Moon" "song") "Moonsong"))
(ensure (eq? (str 'Moon 'song) "Moon song"))