1

... partial application (또는 부분 기능 응용)은 함수에 인수의 수를 고정하여 더 작은 수의 다른 함수를 생성하는 프로세스를 나타냅니다.용어 : 언 바운드 인수가 함수 인 부분 응용 프로그램입니까?

다음에 특정 이름이 있다면 내가 발견하고 싶은

: (의사 코드!)

// 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

사실 부분 적용 이외에도 call_N 함수와 같은 것이 있습니다. 노트의 두 가지 : 당신이 인수에 call_1 또는 call_2를 적용하면

  • , 그들은 즉시 폐기 될 수있다; 모두 당신은 그들과 함께 꼬리 전화가됩니다.

  • 인수를 적용하는 것이 아니라 잠시 동안 유지하는 유사한 함수를 작성할 수 있습니다. 이것은 본질적으로 기능들이 그들의 평가 컨텍스트를 획득하게하고 이전 컨텍스트로 "뒤로 건너 뛰기"를 통해 복잡한 흐름 제어를 구현하는 기술을 제공합니다.

위의 두 가지 사항을 고려하여 실행하면 결국 continuation-passing style이됩니다.

+0

고마워 ... 내 머리가 Wikipedia 기사에서 조금 어지러워 :-) –

+0

@ Martin : 걱정 마세요. 지속에 대해 너무 많이 생각하면 거의 모든 사람들에게 그렇게됩니다. :] –