Haskell is mainly interesting for the implications of a system that assures pure functions everywhere that matters and for its system-fc based type system. Together they permit things like implicit lazy evaluation (whether desirable or not) and fully generalized type inference. The most useful features of haskell now exist in many other langs, the main selling point of haskell being the unlimited general applicability of language features and compiler construction techniques that depend on its effectively unique properties.
Going beyond haskell to more intricite type systems pretty much takes you out of the domain of practical general-purpose langs into the universe of theorem provers, constraint solvers, and the like. If the type system angle is the abstraction you're into then haskell is a no-brainer. It's practical, mature, robust, good ecosystem around ghc, etc.
For the zoo of features in the "metaprogramming" category, haskell is lousy / useless, according to my probably obsolete knowledge. Ideas that involve language extensibility may involve designing some underlying building blocks into haskell as a prerequisite. (Like function purity, not easy to cleanly evolve language support as an afterthought.)
For that,
https://racket-lang.org/ . I've been adding racket to my workflow at any available excuse.
Further down the rabbit hole into not quite yet practical meta-circular evaluators,
https://www.red-lang.org/I would guess that most folks like me coming to Haskell have some programming experience in other languages (C? C++? Pascal? Python? Java? ...) and are looking to expand their horizons and get some functional and static typing enlightenment.
Probably. I'm a never normal special snowflake.
For a total newcomer I'd recommend understanding "interfaces" in C# / Java or even C++-20 "concepts" before attempting to grok algebreic data types. That's a minor challenge in itself if you've never used a static typed lang or come from a multiple-inheritance lang where the overlapping function is less obvious.