I find type level programming (e.g. type families, higher kinded types) to be fairly important. For example, ghc is implemented using a technique called “trees that grow” that allows you to make slight modifications to a data structure in different places that it’s used. Instead of “in this part of the codebase, we assume that the Maybe Frobnicator field has been populated with a Just”, you can have “in this part of codebase, that field just has plain old type Frobnicator”.
I find type level programming (e.g. type families, higher kinded types) to be fairly important. For example, ghc is implemented using a technique called “trees that grow” that allows you to make slight modifications to a data structure in different places that it’s used. Instead of “in this part of the codebase, we assume that the
Maybe Frobnicator
field has been populated with aJust
”, you can have “in this part of codebase, that field just has plain old typeFrobnicator
”.Thanks a lot for the recommendation! I’ll look into it.