Haskell

Haskell is really a two separate languages:
1. simple syntax you use to describe how your code should operate,
2. GIANT type definition syntax you use to setup constraints for the compiler.

2 is absurdly complex if you go deep. To understand it you'll soon be reading obscure ghc documentation, theoretical math papers and books about category theory. Not fun.