 Currying is useful in both practical and theoretical settings.In functional programming languages, and many others, it provides a way of automatically managing how arguments are passed to functions and exceptions.In theoretical computer science, it provides a way to study functions with multiple arguments in simpler theoretical models which provide only one argument.