Pragmatic Type-Level Design


Pragmatic Type-Level Design:Practical introduction into type-level programming: design principles, design patterns, methodologies, approaches
Author: Alexander Granin(Author)
Publisher finelybook 出版社: leanpub
Edition 版次: 1st
Publication Date 出版日期: 2024 v.0.9.1
Language 语言: English
Print Length 页数: 331 pages


Book Description
By finelybook

About the Book
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.

This is my second fundamental book about Software Design, in addition to Functional Design and Architecture.

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.

The book will be useful for developers who want to start doing real things on the type level.

If you liked my FDaA book, you’ll find PTLD enlightening and insightful as well.

Book completion estimation: end of 2024

Book topics:

type-level design, type-level eDSLs, correctness, complexity of solutions, Inversion of Control and Dependency Injection, domain modeling, type-level functional interfaces, design of business logic, interaction with impure subsystems, application architectures & design patterns, testing

GitHub repo: Pragmatic-Type-Level-Design


Table of Contents
Part I The basics of type-level software design
1 Emergent type-level design
1.1 Approaching the type-level design
1.1.1 Types and values
1.1.2 Pragmatic Type-Level Design
1.1.3 Typed Forms diagrams
1.2 The foreshadowing of type-level design
1.2.1 Basics of generics
1.2.2 Basics of type classes
1.2.3 Design principles
1.2.4 Basics of type-level literals
1.3 Summary
2 Use case: simple extensibility
2.1 Extensibility
2.1.1 Extensibility mechanisms
2.1.2 Extensibility requirement
2.1.3 Extension points
2.2 Basically extensible application
2.2.1 Type class interface
2.2.2 Heterogeneous storage problem
2.2.3 Valuefication and existentification
2.2.4 Valuefied storage
2.2.5 Existentified storage
2.3 Summary
3 Use case: genericity and customization
3.1 Type-level genericity
3.1.1 Empty ADTs
3.1.2 Type applications
3.1.3 Ordinary and specific kinds
3.1.4 Custom type-level ADTs and kinds
3.1.5 Type-level lists
3.2 Type-level customization
3.2.1 Case-driven design methodology
3.2.2 Customizable type-level eDSL
3.3 Summary
4 Use case: enforcing correctness
4.1 Correctness is about meaning
4.1.1 Type-safe vs correct
4.1.2 Type-level vs correct
4.2 Static referential integrity
4.2.1 Strengthening the domain model
4.2.2 Static and volatile domain notions
4.2.3 Static operational integrity
4.2.4 Type-level validators
4.2.5 Static structural integrity
4.3 Summary
Part II Architecturing type-level applications
5 Application architecture
5.1 Approaching software architecture
5.1.1 Architecture levels
5.1.2 Double Usage Assessment practice
5.1.3 Two applications, same architecture
5.2 Application structure
5.2.1 Layered architecture
5.2.2 Project structure
5.2.3 Organizing type-level code
5.2.4 Application layer
5.3 Summary
6 Components design
6.1 Static and dynamic domain models
6.1.1 Separate type-level and value-level models
6.1.2 Granular Type Selector design pattern
6.1.3 Interpretation of static and dynamic models
6.1.4 Static materialization
6.1.5 Data Transfer Objects and serialization
6.2 Two functional interfaces
6.2.1 Properties of a true interfacing mechanism
6.2.2 Type class versus Free monad
6.2.3 Free monad interface
6.2.4 Type class interface and the Dynamic Payload design pattern
6.3 Summary
Part III Advanced type-level design
7 Use case: type-level object-oriented programming
7.1 Multiparadigm approach
7.2 Glimpse of typed object-oriented programming
7.2.1 Zeplrog: the concept
7.2.2 The Expression Problem
7.3 Type-oriented object model
7.3.1 Property model
7.3.2 Static materialization and dynamic instantiation
7.3.2 Typed-Untyped design pattern
7.4 Summary
8 Use case: advanced extensibility
8.1 Advanced type-level design and extensibility
8.1.1 Domain modeling with empty parametrized ADTs
8.1.2 Type-level interfaces
8.1.3 Universal evaluation mechanism
8.1.4 Advanced extensibility and the Expression Problem
8.1.5 Type-level combinatorial eDSLs and lambdas
8.2 Summary
Part IV Rosetta Stone
Appendices
Appendix A Typed Forms diagrams
A.1 General conventions
A.2 Regular types, pairs, aliases, lists
A.3 Simple ADTs
A.4 Parametrized types
A.5 Generics specification syntax
A.6 Type classes and instances
A.7 Kinds
A.8 Type promotion
A.9 Simple type families and the HKD template
Appendix B Existential Fight Club
B.1 Haskell, existentification
B.2 Haskell, valuefication
B.3 Rust, existentification
B.4 Rust, valuefication
B.5 C++, object-oriented variant
B.6 C++, valuefication
B.7 Scala 2, existentification with implicits
Appendix C The Mythologized Correctness
C.1 Type safety
C.1.1 Generic type safety
C.1.2 Descriptive type safety
C.2 Technical correctness
C.2.1 Correctness of data structures and algorithms
C.2.2 Correctness of data models
C.2.3 Correctness of languages
C.2.4 Conclusion
Appendix D Extensible value definition model in the Zeplrog project
D.1 Trichotomy: extensibility, type safety, and simplicity
D.2 Extensible value model of Zeplrog
D.2.1 Properties and scripts
D.2.2 Variables, values, and tags
D.2.3 Extensibility with open type families
Appendix E Event-based architecture in the Minefield game
E.1 Minefield application architecture
E.1.1 Event-based actor model
E.1.2 Minefield type-level domain model
E.1.3 Domain-level noun-verb extensibility
E.2 Minefield application implementation
E.2.1 The MVar request-response pattern
E.2.2 Events and queues
E.2.3 Actor model implementation
Amazon page

相关文件下载地址

Formats: PDF | 8 MB | 2024-10-26
下载地址 Download解决验证以访问链接!
打赏
未经允许不得转载:finelybook » Pragmatic Type-Level Design

评论 抢沙发

觉得文章有用就打赏一下

您的打赏,我们将继续给力更多优质内容

支付宝扫一扫

微信扫一扫