https://github.com/JasonGross/coq-tools
Tip revision: a47ed37e05cc2f848d43cb70a627db5c518ba0c0 authored by Jason Gross on 12 July 2022, 18:21:59 UTC
Remove path sensitivity in traceback output, test 12
Remove path sensitivity in traceback output, test 12
Tip revision: a47ed37
memoize.py
# from http://code.activestate.com/recipes/578231-probably-the-fastest-memoization-decorator-in-the-/
__all__ = ["memoize"]
def memoize(f):
""" Memoization decorator for a function taking one or more arguments. """
class memodict(dict):
def __getitem__(self, *key, **kwkey):
return dict.__getitem__(self, (tuple(key), tuple((k, kwkey[k]) for k in sorted(kwkey.keys()))))
def __missing__(self, key):
args, kwargs = key
self[key] = ret = f(*args, **dict(kwargs))
return ret
return memodict().__getitem__