I've been doing computer science tutoring for a few years in languages like Java and Python.

I started teaching a 10th grade student Elm recently. I'd like to use Haskell at some point, but because he likes websites and games, Elm seemed more apropos. What I'm discovering is that a functional language like Elm is fairly natural to him and he's learning quickly!

Our lessons prior to Elm (including Python, Java, and JavaScript at this point) are extracurricular and he hasn't put much study in-between lessons, so his progress has been slow. I don't think he's developed many "programming muscles."

But now, his progress in Elm is faster.

One factor, I think, is how concise functional code is. He hasn't developed much "programmer's eye" up to now (by which I mean scanning a lot of code quickly) but Elm, being much shorter, is easier for him to grasp at a glance.

He also thinks the algebraic data model is cool. He sees how it's related to classes and subclasses, but he appreciates how relatively simple it is.

Mike