Every `curry` implementation I’ve met is broken in some way.
Let’s think what `curry` function should do. First: is should implement valid currying. Second: it should keep function name untouched. Third: it should keep function length. Fourth: it should allow to bind `this` after any number of arguments (until last).