It's only like Haskell's type system compared to other schema languages (most of which don't even have product and sum types). Plate has parametric polymorphism, phantom types, and algebraic data types. It doesn't have typeclasses however (I don't see a way to implement them, thoughts here:
https://github.com/seagreen/plate/issues/1#issuecomment-3028...) and so advanced Haskell features like type families are out.