Pure, Functional, Financial, Python Katas

We live in a world where nightmares exist.

Usually there's little need to worry about their existence. We are philosopher kings lounging in small castles of code, protected from the weird wilderness outside.

However, every so often bugs creep back in.

Burrowing deep under our shear stone walls of logic and resurfacing in long forgotten caverns of ancient ill documented and misunderstood code.

Nature does as it wants, it's our mastery of it that is in some sense unnatural.

When the world conjures up undreamt of dragons and subtle microscopic viruses our code has to adapt - we can't wish for a new world.

However frustrating programming and troubleshooting is, it exists in a world which obeys rules. If the rules would ever break, reality would break. Our misinterpretation of the rules and nature leads to buggy code but if our misinterpretation was in some sense true it would lead to a world where we could prove that one equals two, where everything and nothing is provable.


A century ago, this is the world that David Hilbert implored mathematicians to banish, and in turn provide a complete set of rules upon which we could build elaborate artifices of unbreakable mathematics.

And they did!

Well no, they tried very hard.

Bless their souls.

Mathematicians came up with zoos of calculi - simplified calculation languages to distill mathematics down to it's essence, from which they would then /safely/ build up their new palaces.

It didn't work, because some paradoxes cannot be solved and neither expelled from our world.

A bunch of these calculi ended up achieving the title of universal models of computation. These languages could not compute 'everything' but they could do everything which mathematics could.

Programming languages and software were incidentally born, although no one knew that - until, one day, Alan Turing conceived of our modern world.


I plan to write daily Python exercises and post them up here for everyone to follow along.

They will be financially flavoured, but random.

Katas are daily ten or twenty minute exercises, which you have no excuse not to do.

Everyone can spare ten minutes!

And if you follow them every day you will see the benefit.

There's a twist though.

The katas will be as purely functional as possible.

Python is a multi-paradigm language, and we will safely ignore all of them (because they are mostly nonsense).

Our castles of code will be simple, elegant and as sound as Python code can be.