pythonhaskellfunctional-programmingpartial-applicationpartial-functions

What exactly is meant by "partial function" in functional programming?


According to my understanding, partial functions are functions that we get by passing fewer parameters to a function than expected. For example, if this were directly valid in Python:

>>> def add(x,y):
...    return x+y
... 
>>> new_function = add(1)
>>> new_function(2)
3

In the snippet above, new_function is a partial function. However, according to the Haskell Wiki, the definition of partial function is

A partial function is a function that is not defined for all possible arguments of the specified type.

so, my question is: what exactly is meant by "partial function"?


Solution

  • You are here confusing two concepts. A partially applied function [haskell-wiki] with a partial function [haskell-wiki].

    A partially applied function is:

    Partial application in Haskell involves passing less than the full number of arguments to a function that takes multiple arguments.

    whereas a partial function indeed is a non-total function:

    A partial function is a function that is not defined for all possible arguments of the specified type.