<evangelism>
Sounds like you might like D (dlang.org). It does C better than C, has functional features without being as ridiculously complex as C++.
</evangelism>
Clearly I was wrong, and I spent the last hour playing with D!
Many thanks for your advice!