&gt; your approach will be instinctively imperative<p>Not necessarily (based on being an assistant in lab sessions for first year students learning Haskell).<p>But what it did do was put everyone on the same level, including the arrogant students who &quot;already knew how to code&quot; and hadn&#x27;t listened (or attended) the lectures.<p>I think they chose a functional language to start with good habits for thinking about <i>what</i> to implement, not how to implement it.  If you don&#x27;t know what the problem is, you should work on that, rather than bashing out some Java...