rename curry to partial_function since that is what it actually is
rename template parameter