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_function
znajduje 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”?
partial
wykonuje 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 5
nie jest aplikacją jednofunkcyjną. To pierwsze dotyczy add
3, aby uzyskać nową funkcję, która następnie jest stosowana do 5.
partial
metoda jest deklaracją do przodu opcjonalnie zaimplementowanej metody prywatnej w innym miejscu w bazie kodu projektu.
new_function = functools.partial(add, 1)