In several functional languages like Haskell and OCaml, functions are automatically curried. This means that a function taking two arguments (lambda x, y: x + y) is actually a function that returns a function (lambda x: lambda y: x + y).
But most programming languages, even many functional languages, like Elixir, don't do this.
What are the advantages and disadvantages of this approach to functions?