For a purely functional language. Scheme is not that.

https://www.gnu.org/software/guile/manual/html_node/while-do...

And you are wrong because you can define a loop as iterating recursively over a list with just car and cdr.

Can but since other constructs exist that doesn't by itself make TCO "must have"