std: 표준 라이브러리 — effect 다형성이 처음으로 검사된다
std/list.cool, string.cool, int.cool, bool.cool. 본문 없는 선언이고 런타임이 구현한다. 이 파일들은 구현이 아니라 시험대다. 부채 상환이 아니라 검증이다. std가 없을 때 List.each는 모르는 이름이라 조용히 통과했다. "모르는 것을 틀렸다고 말하지 않는다"는 맞는 원칙이지만, 그 그늘에 검사되지 않는 영역이 숨어 있었다. 넣자마자 샘플 01이 깨졌다 — List.each에 Result를 반환하는 클로저를 넘기고 그 안에서 ?를 쓰고 있었다. each는 값을 남기지 않는 클로저만 받고, ?는 클로저 밖으로 나가지 못하며, 결과를 버릴 방법은 언어에 없다. map으로 고쳤다. 이것이 std를 먼저 한 이유 그 자체다. - IR은 이제 모듈 그래프 전체를 받고 전역 이름은 "<경로>#<이름>"으로 정규화된다. 별칭은 가져오는 쪽의 선택이므로 실행 의미에 남아서는 안 된다. - 본문 없는 선언은 런타임 구현으로 낮아지고, 그 이름은 모듈 파일에서 온다 (std/list.cool의 each = "list.each"). 별칭과 무관하다. - prelude 없음. std도 명시적으로 가져온다. - samples/12: effect 변수가 호출 지점에서 실제로 해소된다는 증거. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019ZVDeU6KLuUVL3gs18Hm3E
This commit is contained in:
@@ -338,6 +338,17 @@ L2 빠른 테스트 / L3 fuzzing / L4 formal proof → 요청 시, 분리 실행
|
||||
invalidation 범위를 넓히는가? / unrelated code 의미를 바꾸는가? /
|
||||
기존 개념의 중복 표현인가? → 강한 이유 없으면 거절
|
||||
|
||||
■ 표준 라이브러리 (std/)
|
||||
본문 없는 선언 파일이다. 런타임이 구현하고 .cool 파일은 계약만 말한다.
|
||||
구현이 아니라 시험대인 것이 요점 — effect 다형성이 실제로 쓸 만한지가
|
||||
List.each와 List.map에서 결정된다. 규칙이 틀렸으면 여기서 드러난다.
|
||||
prelude는 없다. std도 명시적으로 가져온다 — 암묵적으로 끌어오지 않는다는
|
||||
규칙에 예외를 두지 않는다.
|
||||
※ std를 넣자마자 샘플 01이 깨졌다. List.each에 Result를 반환하는 클로저를
|
||||
넘기고 그 안에서 ?를 쓰고 있었다. 검사되지 않던 코드가 검사되기 시작한
|
||||
것이고, 이것이 std를 "부채 상환"이 아니라 "검증"으로 본 이유다.
|
||||
결과를 버릴 방법이 언어에 없다는 성질도 여기서 처음 확인됐다.
|
||||
|
||||
■ 측정 (2026-08, v0 fast path)
|
||||
100,391줄 / 200 모듈 (사슬 의존). bench/bench.ml로 재현.
|
||||
cold 전체 검사 245ms
|
||||
|
||||
Reference in New Issue
Block a user