Według mojego zrozumienia, funkcje częściowe są funkcjami, które otrzymujemy, przekazując do funkcji mniej parametrów niż oczekiwano. Na przykład, jeśli byłoby to bezpośrednio poprawne w Pythonie:
>>> def add(x,y):
... return x+y
...
>>> new_function = add(1)
>>> new_function(2)
3
W powyższym fragmencie new_functionznajduje się funkcja częściowa. Jednak według Haskell Wiki definicja funkcji częściowej to
Funkcja częściowa to funkcja, która nie jest zdefiniowana dla wszystkich możliwych argumentów określonego typu.
więc moje pytanie brzmi: co dokładnie oznacza „funkcja częściowa”?
partialwykonuje częściową aplikację , podczas gdy Haskell robi to automatycznie. Wpis wiki odnosi się do funkcji częściowych , które są terminem z matematyki.
add 3 5nie jest aplikacją jednofunkcyjną. To pierwsze dotyczy add3, aby uzyskać nową funkcję, która następnie jest stosowana do 5.
partialmetoda jest deklaracją do przodu opcjonalnie zaimplementowanej metody prywatnej w innym miejscu w bazie kodu projektu.
new_function = functools.partial(add, 1)