Терминология: Частичное применение, где несвязанный аргумент является функцией? - PullRequest
1 голос
/ 12 августа 2011

... частичное применение (или частичное применение функции) относится к процессу фиксации числа аргументов функции, производящему другую функцию меньшей арности.

Я хотел бы узнать, существует ли конкретное имя для следующего: ( псевдокод! )

// Given functions:
def f(a, b) := ...
def g(a, b) := ...
def h(a, b) := ...

// And a construct of the following:
def cc(F, A, B) := F(A, B) // cc calls its argument F with  A and B as parameters

// Then doing Partial Application for cc:
def call_1(F) := cc(F, 42, "answer")
def call_2(F) := cc(F, 7, "lucky")

// And the calling different matching functions this way:
do call_1(f)
do call_1(g)
do call_2(g)
do call_2(h)

Есть ли имя для этого в функциональном программировании?Или это только частичное приложение, в котором несвязанный параметр оказывается функцией

1 Ответ

1 голос
/ 12 августа 2011

На самом деле, есть нечто большее, чем ваши call_N функции, помимо частичного применения.Следует отметить две вещи:

  • Когда вы применяете call_1 или call_2 к аргументу, они могут быть немедленно отброшены; все , что вы сделаете с ними, будет хвостовым вызовом.

  • Вы можете написать аналогичные функции, которые не просто применяют аргумент, но держат его некоторое время;это, по сути, позволяет функциям захватывать их контекст оценки и предоставлять методы для реализации сложного управления потоком посредством «возврата» к предыдущему контексту.

Если вы берете две вышеупомянутые точки и запускаетес концепцией, вы в конечном итоге получите стиль продолжения .

...