Here's the kind of things I'm thinking of:
- Learn category theory
- Build an interpretter/compiler
- Develop your own programming language
- Learn about and built distributed systems
- Learn to write code for the GPU
- Understand assembly code
- Learn about CPU architecture
I think, especially since it's the holiday season, maybe lets take a step back and just accept these things probably will make you a better programmer, but there are lots of them. If you do all of them, you'll maybe become a very good programmer, but you'll definitely become a very tired human being.
If you have an interest in the mathematical underpinnings behind some of the ideas in Haskell et al, you might love category theory, but if you just want to do effective functional programming effectively, you're fine just doing that