Summary

This chapter reviewed patterns of kind abstraction. In doing so, we encountered the key ways in which the kind-system has been extended since Haskell 98.

We started with associated type synonyms, which we then placed in the broader context of type families. Next, we explored kind polymorphism and type promotion and found that these kind-system enrichments together raise Haskell to a capable type-level programming language.

As the kind system becomes more powerful, the line between type and term-level programming becomes fainter. Yet, we saw that kinds remain second-class citizens of Haskell.

We concluded with a discussion of dependently-typed programming and how the Haskell language continues to reach more deeply into this paradigm.

Get Haskell Design Patterns now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.