What is a good programming language to learn to broaden a C# developers mind?
<p>I was reading <a href="http://rads.stackoverflow.com/amzn/click/020161622X" rel="nofollow">The Pragmatic Programmer</a> last night and it recommends learning a whole host of languages as you go through your career - even if you'll never use them. I'd always thought this would be a good idea, but the book has given me enough impetus to think about it seriously.</p>

<p>It also mentions (words to the effect of) "learn object oriented design and you'll code pure C programs differently".</p>

<p>I could go and (re)learn Java, but it seems perhaps an easy option given it's a language that follows a lot of the same principles as C#. I will probably still (re)learn Java at some point, but I'm quite interested first of all in what languages would be sufficiently different in their pattern of thinking that I would learn a different perspective - or just a whole different way of thinking about how to code a program.</p>

<p>Functional programming perhaps? Any suggestions are welcome, but please try and provide a short reasoning as to why they might be interesting and "new" from a C# user's perspective.</p>
