Should have started him with Haskell so he would learned monads and functors right from the start with no mutable object baggage to trip him up. Maybe a few weeks of child level category theory first.
I would sit him through a few Leslie Lamport lectures on category theory, maybe just 10 hours worth of material. I think this would be enough to get him stared with Haskell.
Why lisp ? Because you want to give him the best possible tool for computing and ruin his (possible) future career, where he will be forced to work with people that like java and/or javascript.
I would need to write up a bunch of new analogies for Haskell. I only recently started to make sense of functional Javascript and it's changed the way I think about code. Haskell is definitely on my own list of things to learn.