A Redis-like data-store practice project.
The name is just redis
reversed.
- Should use TDD
- Should use functional core, imperative shell
The main rationale behind using a functional core is to:
- Write tons of unit tests, as formal provability is easy. Every function takes an input, returns a new copy of internal core. There's no mutable state.
- Shell easily replaceable. Right now it's a CLI, it can easily be hooked to a Flask API or Desktop GUI as the shell is just a layer which calls the core and displays the output
- Limited to
str
<>str
mapping - Some compromises had to be made to make the core functional (i.e unset)