🧠Type-safe memory units
"People think dreams aren't real just because they aren't made of matter, of particles. Dreams are real. But they are made of viewpoints, of images, of memories and puns and lost hopes."
― Neil Gaiman
This package implements type-safe memory units. It pursues the following goals:
The ideas behind this package are described in the following blog post:
The library is built around the following data type:
newtype Memory (mem :: Nat) = Memory
{ unMemory :: Natural
}
This data type stores every memory internally as bits. However, unit multiplier is stored as type-level natural number. This approach allows to represent different units and implement instances for them with low amount of boilerplate.
membrain
implements various useful functions to work with Memory
:
base
.Icons made by Kiranshastry from Flaticon is licensed by CC 3.0 BY.