작성
·
401
1
안녕하세요.
f(0) 이게 초기값으로 할당할 수 있는 이유를 생각해봤는데요
이해한대로 말해보자면
pipe함수가 리턴하는 익명함수를 변수 f가 할당받고
이제 pipe함수가 리턴한 익명함수는 pipe함수의 렉시컬 스코프를 참조할 수 있고 중간다리 역할을 합니다.
즉 익명함수를 할당받은 f는 클로저입니다.
그럼 f(0) => go (a: 0 , ...fs) 이런식으로 됩니다
f는 상위 스코프를 기억할 수 있는 클로저이니까
(익명함수를 f로 바꿔 표현한것입니다. 정확히 클로저는 익명함수입니다.)
스코프 체인을통해 ...fs를 참조할 수 있습니다....
가 제가 이해한건데 맞을까요??
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
한덕수님의 질문에 대해 답변 드리겠습니다.
말씀하신 내용이 함수형 프로그래밍에서의 클로저와 pipe
함수에 대한 이해가 잘 정리된 것으로 보입니다.
pipe
함수는 여러 개의 함수를 인자로 받아서 이들을 순차적으로 실행할 수 있는 새로운 함수를 반환합니다.
반환된 함수는 클로저를 형성하여 pipe
에 전달된 함수들인 ...fs
를 기억하게 됩니다.
이후 변수 f
가 이 클로저를 참조하게 되어 f(0)
을 실행할 때, a:0
으로 초기값을 설정하고 ...fs
를 통해 전달된 함수들을 차례대로 적용할 수 있습니다.
따라서, 한덕수님께서 이해하신 것처럼 f(0)
을 실행했을 때, f
는 클로저를 통해 ...fs
에 담긴 함수들을 참조하여 순차적으로 함수를 실행하는 것이 맞습니다.
클로저는 자신이 생성될 때의 환경을 ‘기억’하는 함수로, 해당 함수가 선언될 때의 렉시컬 스코프에 접근할 수 있고 해당 범위의 변수를 참조할 수 있기 때문에 가능한 동작입니다.
질문에 대한 답이 되었길 바랍니다. 추가 궁금한 사항이 있으시면 언제든지 문의하시기 바랍니다.