Skip to content

Instantly share code, notes, and snippets.

@Nazek42
Last active June 20, 2016 20:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Nazek42/014b4d38b77f7b27100b39279e1d602d to your computer and use it in GitHub Desktop.
Save Nazek42/014b4d38b77f7b27100b39279e1d602d to your computer and use it in GitHub Desktop.
Python Currying
import functools
import inspect
# Decorator
def curry(func):
sig = inspect.signature(inspectable(func))
@functools.wraps(func)
def wrapper(*args, **kwargs):
try:
sig.bind(*args, **kwargs)
return func(*args, **kwargs)
except TypeError:
return functools.partial(func, *args, **kwargs)
return wrapper
def inspectable(func):
def wrapper(*args, **kwargs):
return func(*args, **kwargs)
return wrapper
@Nazek42
Copy link
Author

Nazek42 commented Jun 20, 2016

>>> @curry.curry
>>> def add(x, y):
>>>     return x + y
>>> increment = add(1)
>>> increment(7)
8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment