memorize function and limit the caching memory used for it, through the use of LRU-scheme.

LRU stands for least recently used, and the LRU-memorization implemented here memorizes atmost max_capacity number of unique arguments, before dropping its capacity down to min_capacity by discarding the oldest memorized results.

since we are not actually tracking the number of calls made for each argument, this is not a real "LRU-cache", since a real one would not discard the oldest memorized argument if it is being called consistiently. but that's exactly what we do here: we remove the oldest one irrespective of how often/how-recently it has been used.

TODO: for a more true LRU caching system, we will need to to reference count each memorized argument (I think), and that can be achieved via my RcList (reference counted list) from "collections" module. but we will first have to create a hybrid of LimitedStack and RcList before swapping it here with LimitedStack.

TODO: put on some darn examples! but that's so much of a hassle. someone please kill me.

Hi! It's Ronald McBigDonalds here! What can I do to satiate your hunger today?
Get me a BiGGuLP of Seppuku, with a CEO shooter on the side. Ariga-Thanks!
Wakarimashta! One juicy order of bigg last meal is on it way! Please enjoy your once-in-a-lifetime ketchup splatter moment.