1+1을 계산하려다 함수형 프로그래밍 언어를 만들었다

Needed 1+1, built a functional programming language

1+1을 계산하려다 함수형 프로그래밍 언어를 만들었다

데이터 구조 과제로 1+1+1을 이진 트리로 평가하다, 평가기가 덧셈과 뺄셈을 구분할 필요가 없다는 걸 깨닫고 함수형 언어로 확장한다. C로 클로저, 가비지 컬렉터, 커스텀 메모리 할당자, REPL, FFI까지 구현한 과정을 담았다. 피보나치 fib(5)가 13,000개 노드를 생성해 크래시하고, fib(40)은 12GB 메모리를 잡아먹는 문제를 해결하며 언어의 핵심 요소를 하나씩 완성해 나간다.

fib(40)은 OOM으로 크래시하기 전까지 문자 그대로 12GB 이상을 사용했다. 왜냐하면 약 13억 개의 노드를 생성하기 때문이다. 노드당 48바이트면 약 62.4GB에 달하는 노드 할당이다.

이 날의 다른 글

2026-09-30