While working to add typed configuration to my Haskell Redis server clone, I found myself learning some new tricks, all of them stemming from Haskell's Kind system. In this article, we're gonna discuss what I learned and the things I managed to build with it.

We'll start from the beginning, with Values.

Values

These are the constructs we manipulate in our programs, things like 1, 2, True, "hello", etc… In functional programming contexts, they're also called "terms." They are the things we consume, create, compute with, and output. The management and manipulation of values is a big part of the practice of programming and software engineering.