How to learn language extensions

Weeeell, how else could that be organised? (I’ll try to think myself back to when Haskell was all new to me.)

Compare those big, sprawling languages. (You know who I mean, but I was a COBOL and SQL programmer for two decades.)

There’s C with preprocessor/macros overlaid (in effect a different language in the same source file) with C++ overlaid as a superset (does that really work?) with Template C++ overlaid.

Java I don’t know well but it seems to be a verbose mess.

Haskell starts with a small, perfectly-formed language (H2010) delivered with a comprehensive Prelude and feature-rich libraries. That’s what hooked me to start with. Then you hit limitations, and you discover there’s an extension for that. And you’ll note Haskell is also a research language, so some extensions count as ‘experimental’/not mature; you can avoid those.

Can you use a disciplined subset of C/Java like that and have the compiler warn you you’re straying into dangerous territory? If you find a library/package that seems to fit your need, can you quiz it as to whether it’s using unfamiliar constructs? Or do you have to learn/know the language as a homogenous blob? Perhaps you already got a “brain upgrade” to work with those languages, but they took up so much brainpower they squeezed out the memory?