이 문서는 Continuation-passing style(CPS)을 자바스크립트 예제를 통해 설명한다. CPS는 함수가 호출자에게 직접 반환하지 않고, 대신 호출자가 전달한 콜백(continuation)을 호출하여 제어를 넘기는 프로그래밍 스타일이다. 주요 내용으로는 CPS의 기본 개념(항등 함수, 팩토리얼 예제), Ajax 프로그래밍에서의 비동기 처리 적용, Node.js 환경에서의 논블로킹 I/O 활용, 예외 처리 및…
7 min read
자바스크립트에서의 Continuation-passing style (CPS) 소개
Source
Evernote/Technote scraps/dogfeet - 예제로 설명하는 자바스크립트에서의 Continuation-passing style.md
Summary
이 문서는 Continuation-passing style(CPS)을 자바스크립트 예제를 통해 설명한다. CPS는 함수가 호출자에게 직접 반환하지 않고, 대신 호출자가 전달한 콜백(continuation)을 호출하여 제어를 넘기는 프로그래밍 스타일이다. 주요 내용으로는 CPS의 기본 개념(항등 함수, 팩토리얼 예제), Ajax 프로그래밍에서의 비동기 처리 적용, Node.js 환경에서의 논블로킹 I/O 활용, 예외 처리 및 call/cc 구현 방법 등이 포함된다. CPS는 단일 스레드 환경에서 블로킹을 피하고 제어 흐름을 유연하게 관리하는 데 유용하다.
Key Points
CPS 정의: 함수는 리턴하지 않고, 호출자가 전달한 콜백(continuation)을 호출하여 결과를 전달한다.
기본 예제: 항등 함수(id)와 팩토리얼(fact)을 CPS 방식으로 변환하는 코드 예시 제공.
Ajax 적용: XMLHttpRequest를 활용한 fetch 함수를 CPS 방식으로 구현하여 브라우저 블로킹 없이 비동기 데이터 처리 가능.
Node.js 적용: 파일 I/O 및 네트워크 요청 등 블로킹 연산을 콜백 기반 CPS로 처리하여 논블로킹 서버 구현.
고급 주제: CPS를 이용한 예외 처리, 미니멀 Lisp 컴파일러, 자바스크립트에서의 call/cc 구현 소개.