I agree with allusion and the most recent Anon (hard to keep them straight...they all look the same to me).
If a template function that is returning a list doesn't mark it up as a list, then how will it ever get marked up?
"It is semantical to markup your links as a list, true. This ought to occur in the TEMPLATE, not in the FUNCTION!!! It is a horrible practice."
Ok, so are you then going to write a chunk of PHP in your index.php template that will parse the raw output of every function? If a list is returned as a string, are you then going to loop through that string and parse it however you want so that it can be marked up? Sorry, but that's absurd.
"It ought not be a decision to do html markup in your functions. Period."
Again, how will you mark up the results, then? Are you suggesting that all data should be raw data, and markup is not necessary? If not, then explain how you would handle it in your index.php template...On second thought, don't. The idea is to keep the index template as clean and easy to understand for the end user as can reasonably be done, and let the system (the functions) return *valid* and *semantic* markup. You're free to style that markup as you please. If you *really* want raw data, you can access those functions directly instead of using the template functions...
On a related note, I really hate how the car manufacturers keep putting tires on my car, and putting the steering wheel in the *front* seat! I whish they would just give me a pile of scrap metal, and some nuts and bolts, and let me do it however I want!