Rethinking Common Lisp's format
Function
An issue with Common Lisp's
formatfunction is that it follows the C tradition that many languages have also followed of using a format string for the templates. This causes several issues, namely, input sanitization being needed in all cases where an externally supplied string may end up being consumed by a
formatfunction call. It'd be much safer to have something that instead consumes a template sequence (such as a list) that contains strings and symbols that are used for literal text and templating placeholders respectively.
In a language with a more sophisticated type system and more strict type safety mechanisms this could be further refined with a template type to avoid issues where sequences get consumed by a templating function on accident.
Are there any other Lisps that implement something like this? Feels more likely for a Scheme like Racket or Guile to do so?