They do in Racket? You look at the "List" documentation and you find all of the functions for lists. Likewise with hash tables, numbers, strings, sequences, files, etc.
> The only way to know strcat, puts, and strlen exist is…
... to look at the documentation on docs.racket-lang.org. The powerful search includes results not only for the standard ("batteries included") library reference, but also the standard guide and 3rd party libraries.
> once I had my traits that I also wanted compile-time attributes à la Rust/C# and there’s no clean way to add those to Lisp’s syntax
I mean, why are you not able to do (trait whatever) before (define whatever) or (for-each whatever) or (let whatever)?
> Lisp is neat but it just doesn’t fit in the future of programming that Rust and C#
Have you tried it or did you just try to figure out why you don't think you like it from an LLM?