수학의 숨은 거리

논리의 신전

ja· en· ko
처음 오신 분께타입 검사를 통과하는 건 작은 증명이 통과하는 것 — 이라는 관점의 이야기예요.

이 신전을 알아 두면, "타입 검사가 통과한다"라는 말의 뜻이 조금 깊어져요. 타입은 명제이고, 타입이 붙은 값은 작은 증명이에요 — Note 타입의 값을 짜 맞출 수 있었다는 건, "이건 Note의 모양을 하고 있다"라는 명제에 증명이 붙었다는 뜻이에요.

타입은 실행 시점에는 사라져요(type erasure). 신전은 땅 위에 건물을 남기지 않아요 — 하지만 심사를 통과한 문서만 배에 오르니까, 바다 건너편에서 생기는 사고가 줄어요. 수학이 공학을 떠받치는 방식 중에서, 가장 조용한 모습일지도 몰라요.

볼거리

  • 장경각의 타입은 Activity Vocabulary 명세에서 기계적으로 사경돼요 — "명세가 타입이 되고, 타입이 검사가 된다"라는 사경의 사슬이죠
  • 타입 검사는 "그 모양이다"라는 것만 증명해요. "그 내용이 옳다"라는 건 증명하지 않아요 — 신전의 심사에도 관할이 있는 거죠
  • 커리–하워드 대응을 끝까지 밀어붙인 증명 보조 시스템(Lean, Coq 등)에서는, 수학 정리 그 자체를 타입 검사로 확인해요. 이 신전의 총본산에 해당하죠

경문 한 구절

export default async function generateVocab(
  schemaDir: string,
  generatedPath: string,
): Promise<void> {
  const types = await loadSchemaFiles(schemaDir);
  const encoder = new TextEncoder();

  const file = await open(generatedPath, "w");
  const writer = file.createWriteStream();

  for await (const code of generateClasses(types)) {
    writer.write(encoder.encode(code));
  }
packages/vocab-tools/src/generate.ts L5-L18— 장경각의 사경 책상을, 마루 밑에서 올려다봐요 — 명세가 타입(명제)이 되는 순간

배치도

packages/vocab-tools/src/generate.ts
타입이 태어나는 현장. 명세 → 타입 사경

옆방