Skip to content
/ sider Public

A dumb `redis`-like data store using Python. Practice project for imperative shell, functional core.

Notifications You must be signed in to change notification settings

sinnytk/sider

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sider.py

What?

A Redis-like data-store practice project. The name is just redis reversed.

Design decisions

  • Should use TDD
  • Should use functional core, imperative shell

The main rationale behind using a functional core is to:

  1. 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.
  2. 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

Limitations

  • Limited to str <> str mapping
  • Some compromises had to be made to make the core functional (i.e unset)

Resources

About

A dumb `redis`-like data store using Python. Practice project for imperative shell, functional core.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages