Название: Pragmatic Type-Level Design
Автор: Alexander Granin
Издательство: Leanpub
Год: 2024 (v.0.9.1)
Страниц: 331
Язык: английский
Формат: pdf (true)
Размер: 10.1 MB
Practical introduction into type-level programming: design principles, design patterns, methodologies, approaches. An approachable, well-written, practice-oriented, academism-free guide into programming with types. How to build useful real-world type-level programs with low complexity and low risks. Pragmatic Type-Level Design is a book about programming in types, about the discipline of Software Design, lifted onto the level of types, and type-level approaches useful in real practice. I aim to provide a well-written and well-structured source of knowledge about type-level design. I’m not only talking about type-level features but also providing a reasoning framework for making the narrative complete and comprehensive. The central philosophy of this book - pragmatism - is used to build a practice-first methodology on how to approach types and not drown in the related complexity. The type-level design is difficult on its own, type-level features in various languages are difficult as well, and there is no need to raise the learning bar even more. Type-level programming has been around for a while, with many languages boasting rich type systems. It’s a domain beloved by many, especially in Haskell, where types are one of the language’s most compelling features. Haskell developers often gravitate toward the mathematical foundations of types, like Category Theory and Type Theory. Good old Haskell 2010 introduces a lot of type-level features. Type definitions, type classes, type variables, constraints, kinds, phantom types, and algebraic data types. With dozens of modern GHC extensions, it becomes orders of magnitude more powerful. Type-level literals, type families, multi-parameter type classes, generalized algebraic data types, different options for type-level polymorphism, et cetera, et cetera – it’s too long to enumerate all these tools, what to say about the explosion of all possible ways to combine them. The book will be useful for developers who want to start doing real things on the type level.