On recent master: (cl-substitute ?\_ ?\/ "foo/bar") => [102 111 111 95 98 97 114] But this should return: "foo_bar" This seems to be a bug in commit 8c8ff13e "Clean up 'cl-' prefixes for local variables", which replaced variable names without considering the semantics. In this case the cl-seq was being used to name a new variable to distinguish it from `seq' -- see attached patch. [The commit that introduced the semantically significant variable is de5a89254 "Don't mutate strings in cl-substitute" The point of the `n' in nsubstitute is to mark the function as one that possibly mutates its argument, (when the implementation judges that is more efficient and the user prefers to reuse string storage rather than copy it) https://www.lispworks.com/documentation/HyperSpec/Body/f_sbs_s.htm I haven't understand this commit message yet but I hope it does not preculde a comprehension of the semantics of the "n!"-variant.] -- Madhu