본문으로 이동
왜 폴 그레이엄은 회사 이름을 Y Combinator라고 지었을까
문서

왜 폴 그레이엄은 회사 이름을 Y Combinator라고 지었을까

남영환, 이종립 · 컬리 · 컬리 기술 블로그

원본 보기

소개

왜 폴 그레이엄은 회사 이름을 Y Combinator라고 지었을까

AI 핵심 요약

함수형 프로그래밍에서 재귀는 보통 함수가 자기 이름을 참조하지만, 람다 계산법만으로는 이런 이름 참조가 자유 변수 문제를 일으킨다. 글은 Clojure의 함수·람다 문법과 콤비네이터 개념을 소개한 뒤, 자기 자신을 적용하는 Ω 콤비네이터에서 출발해 팩토리얼 재귀를 구성한다. 이어 Y Combinator를 구현해 재귀 로직을 함수에서 분리하고, 자기 참조 없이도 팩토리얼을 계산할 수 있음을 Clojure와 JavaScript 예제로 보여준다. 저자는 Y Combinator가 다른 함수를 재귀적으로 확장하는 원리라는 점에 착안해, 폴 그레이엄이 스타트업을 성장시키는 회사의 이름으로 이를 택했을 가능성을 제안한다.

  • 콤비네이터는 자유 변수를 포함하지 않고, 함수 안에서 사용하는 변수는 매개변수로 바인딩되어야 한다.
  • Y Combinator는 함수에 자기 자신을 직접 참조하지 않고도 재귀를 가능하게 하는 고정점 콤비네이터다.
  • Clojure에서는 함수도 값이므로 `fn`으로 익명 함수를 만들고 `def`로 이름을 연결할 수 있다.
  • 자기 자신을 자기 자신에 적용하는 Ω 콤비네이터는 무한 재귀를 만들며, 실행 시 호출 스택이 넘칠 수 있다.