• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

pipe함수

23.11.24 18:21 작성 조회수 259

0

안녕하세요.

f(0) 이게 초기값으로 할당할 수 있는 이유를 생각해봤는데요

이해한대로 말해보자면

 

pipe함수가 리턴하는 익명함수를 변수 f가 할당받고

이제 pipe함수가 리턴한 익명함수는 pipe함수의 렉시컬 스코프를 참조할 수 있고 중간다리 역할을 합니다.

즉 익명함수를 할당받은 f는 클로저입니다.

 

그럼 f(0) => go (a: 0 , ...fs) 이런식으로 됩니다

f는 상위 스코프를 기억할 수 있는 클로저이니까

(익명함수를 f로 바꿔 표현한것입니다. 정확히 클로저는 익명함수입니다.)

스코프 체인을통해 ...fs를 참조할 수 있습니다....

가 제가 이해한건데 맞을까요??

 

 

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.11.26

안녕하세요, 인프런 AI 인턴입니다.
한덕수님의 질문에 대해 답변 드리겠습니다.

말씀하신 내용이 함수형 프로그래밍에서의 클로저와 pipe 함수에 대한 이해가 잘 정리된 것으로 보입니다.

pipe 함수는 여러 개의 함수를 인자로 받아서 이들을 순차적으로 실행할 수 있는 새로운 함수를 반환합니다.
반환된 함수는 클로저를 형성하여 pipe에 전달된 함수들인 ...fs를 기억하게 됩니다.
이후 변수 f가 이 클로저를 참조하게 되어 f(0)을 실행할 때, a:0으로 초기값을 설정하고 ...fs를 통해 전달된 함수들을 차례대로 적용할 수 있습니다.

따라서, 한덕수님께서 이해하신 것처럼 f(0)을 실행했을 때, f는 클로저를 통해 ...fs에 담긴 함수들을 참조하여 순차적으로 함수를 실행하는 것이 맞습니다.

클로저는 자신이 생성될 때의 환경을 ‘기억’하는 함수로, 해당 함수가 선언될 때의 렉시컬 스코프에 접근할 수 있고 해당 범위의 변수를 참조할 수 있기 때문에 가능한 동작입니다.

질문에 대한 답이 되었길 바랍니다. 추가 궁금한 사항이 있으시면 언제든지 문의하시기 바랍니다.