도구스개발

람다 계산 베타 축소 계산기

람다식을 입력하면 정규 순서(normal order)로 베타 축소를 한 단계씩 적용해 정규형까지 보여줍니다. 변수 포획을 피하는 알파 변환도 자동으로 적용됩니다.

λ 대신 \ 를 써도 됩니다. 예: (\x.x) y

축소 결과

정규형에 도달함

1스텝 축소

한 단계씩 보기

스텝 0

(λx.x) y

스텝 0 / 1축소 가능
정규 순서(normal order) — 가장 왼쪽·바깥쪽 리덕스부터 축소합니다. 인자를 먼저 계산하지 않고 통째로 치환해 넣기 때문에, 정규형이 존재한다면 반드시 찾아낸다고 알려져 있습니다(표준화 정리). 치환 과정에서 변수 이름이 겹쳐 포획이 일어날 자리는 자동으로 알파 변환(이름 뒤에 를 붙임)해 피합니다.
모든 람다식이 정규형에 도달하는 것은 아닙니다. 람다 계산은 튜링 완전이라 어떤 식이 정규형에 도달할지 미리 판정하는 일반적인 방법이 없습니다(정지 문제와 같은 이유). 최대 스텝 수에 도달하면 강제로 멈춥니다 — 그렇다고 정규형이 없다고 단정할 수는 없습니다.

사용 방법

  1. 1람다식을 입력합니다. λ 대신 \ 를 써도 됩니다. 예: (\x.x) y
  2. 2람다의 몸통은 오른쪽으로 최대한 넓게 먹으므로, 함수 적용의 함수·인자 자리에 람다를 쓰려면 괄호로 감싸야 합니다.
  3. 3최대 스텝 수를 정하면 정규 순서(가장 왼쪽·바깥쪽 리덕스 우선)로 한 단계씩 축소합니다.
  4. 4한 단계씩 넘기며 각 스텝의 항과 정규형 도달 여부를 확인합니다.

자주 묻는 질문

(λx.M) N 형태의 식에서 M 안의 x를 전부 N으로 바꿔 넣는 계산 규칙입니다. 함수를 인자에 적용하는 것과 같은 뜻이며, 람다 계산의 유일한 계산 규칙입니다.

한 항에 축소 가능한 자리가 여럿 있을 때 가장 왼쪽·바깥쪽부터 축소하는 전략입니다. 표준화 정리에 따라 정규형이 존재한다면 정규 순서가 반드시 찾아냅니다 — 인자를 먼저 계산하는 다른 전략으로는 정규형이 있는데도 못 찾고 발산하는 경우가 있습니다.

치환하려는 값에 있는 자유변수 이름이 대상 항에서 묶인 변수 이름과 같을 때, 그냥 글자만 바꾸면 자유변수가 뜻하지 않게 묶여버립니다(변수 포획). 이를 막기 위해 묶인 변수를 새 이름으로 먼저 바꾼 뒤 치환합니다. 이 계산기는 이 과정을 자동으로 처리합니다.

네. (λx.x x)(λx.x x) 같은 식은 축소해도 축소해도 자기 자신으로 돌아와 영원히 정규형에 도달하지 않습니다. 람다 계산은 튜링 완전이라 정지 문제가 결정 불가능하므로, 이 계산기는 최대 스텝 수에 도달하면 실행을 강제로 멈춥니다.

아니요. 입력한 람다식과 계산 과정은 모두 브라우저에서만 처리되며 서버로 전송되지 않습니다.

알아두면 좋은 점

  • 결정적 정규 순서 축소만 다룹니다 — 다른 축소 순서(예: 인자 먼저 계산하는 call-by-value)는 다루지 않습니다.
  • 최대 스텝 수에 도달해도 실제로는 정규형이 존재할 수 있습니다. 스텝 수를 늘려 다시 시도해 보세요.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 3일 · 결과는 참고용 추정치입니다.