docs: quad 재귀 약어 브레인스토밍 research 문서 신설
GNU/WINE류로 Quad를 재귀 약어화하는 카피 후보 정리 — 나중에 README.md 헤딩용, 설계 결정/착수 게이팅과 무관. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
7f3bc4da4e
commit
dcd3f2c732
4 changed files with 107 additions and 0 deletions
|
|
@ -75,6 +75,7 @@
|
|||
| `pre-implementation-audit.md` | M0 착수 직전 크리티컬 감사(2026-08-06 신설) — `base/` 전체를 모호성/지연결정리스크/단순화후보 세 렌즈로 재검토, 11개 우선순위1 + 11개 우선순위2 + 2개 단순화후보. **[2026-08-12 열일곱 번째 세션]** 우선순위1 11개 전원 해소 — 남은 건 `.claude/luau-test/` 스파이크 실측 확인뿐 | 상 — 설계는 전부 해소, `.claude/luau-test/` 스파이크 실측만 남음 |
|
||||
| `operator-sugar-plan.md` | **[2026-08-12 신설]** `Sum`/`Product`/`Not`/비트연산 등 `:Compute`/`:Apply`용 연산자 콤비네이터 슈가 — 메커니즘은 이미 확정된 계약(`Animate`와 동형 패턴) 재사용이라 확정, 네임스페이스 이름만 미정. **[2026-08-12 열아홉 번째 세션]** 서브 에이전트 외부 리서치로 다른 리액티브 라이브러리 선례와 대조 — `Operator`가 가장 강한 선례(Python `operator` 모듈), `Clamp`/`Min`/`Max`가 추가 후보로 부상, 비트연산·비교연산자·`Sub`/`Div`는 선례 전무로 드랍 후보, Debounce/Throttle은 `Blocker`와 다른 시간 기반 메커니즘이라 별도 질문으로 분리, `Filtered`의 Slot 안/밖 구분 판단이 ReactiveUI/SolidJS 선례로 뒷받침됨 — 최종 이름 결정은 여전히 사용자 몫. **[2026-08-13 세션, 두 번째]** Haskell 비교 리서치 중 `Alternative`(nil 대체값, coalesce류) 후보 신설 — 카탈로그 확정 규칙에 그대로 맞음, 이전엔 없던 게 확인됨 | 하 — 구현은 맨 마지막(순수 슈가, 없어도 무방, 함수 간 의존 없음), 사용자가 직접 후순위 지정 **[2026-08-13 여섯 번째 세션]** `State<State<T>|T>` → `State<T>` 평탄화 항목 신설(백로그) — `State<State<T>>`가 정상 동작하게 됐지만 `retractFrom`의 힌트가 직속 1단계에만 가서 깊은 중첩에선 깜빡임 방지가 꺼진다는 게 구체적 동기, 사용자 판단으로 "UB는 아니지만 원치 않는 방향". `Operator.*`가 아니라 `state:Flatten()` 메소드로 제공하는 게 맞아 보이며, **반환 노드가 동적 의존성을 갖는다는 난점**(quad가 의도적으로 비지원하기로 한 바로 그것)이 확정 전 최대 쟁점 |
|
||||
| `debounce-throttle-plan.md` | **[2026-08-14 신설]** 시간 기반 전파 게이트 `Debounce`/`Throttle` — 사용자 요청("`Blocker`와 유사하게")으로 신설. 요지: (1) `Blocker`가 이미 쓰는 게이트 노드의 **릴리스 트리거만 타이머로 바꾼 것**이라 새 전파 메커니즘이 아님 — `Blocker` 구현(M3) 시점에 게이트를 공용으로 빼두는 게 쌈, (2) 무효화 채널만 만지므로 laziness 안 깨짐, (3) **Debounce/Throttle의 차이는 "신호가 창 타이머를 리셋하는가" 한 비트뿐** — 공개 생성자는 둘, 구현은 하나(초안의 lodash식 `maxWait` 공식엔 trailing 통과 직후 이중 발화 버그가 있었음), (4) 알고리즘은 quad-base + 주입 op 2개 `setTimeout(func, delay) -> Timeout`/`clearTimeout`(Roblox `task.delay`/`task.cancel`로 배선 — **인자 순서 반대라 주의**). `os.clock()`은 Luau 표준 라이브러리라 주입 대상 아님(단 절대 시각이 아니라 **diff 전용**), 취소 없는 엔진도 래핑+유효 플래그로 대응 가능, `Timeout`은 `{ __type_timeout: true, _native: any }`. **부수 성과**: 이 설계 중 `source-state-plan.md`의 무효화 dedup 서술이 `Observer` 계약과 모순되는 게 발견돼 base 전면 정정(`archive/invalidate-dedup-propagation-reversed.md`) | 하 — M0 안 막음(코어 계약 변경 없음), 다만 순수 슈가가 아니라 실제 기능 갭이라 `operator-sugar-plan.md`보다는 위. 의존은 M3(State)+백엔드 주입. 남은 열린 질문: 이름(Roblox 관용 debounce와 충돌)/값 지연 의미론/제어 핸들 `Flush`/`Time=0` 허용 |
|
||||
| `quad-recursive-acronym.md` | **[2026-08-14 신설]** GNU/WINE류로 `Quad`를 재귀 약어화하는 카피 브레인스토밍 — 설계 결정도 착수 게이팅도 아니고 나중에 README.md 헤딩 등에 쓸 캐치프레이즈 후보 모음. 자학 개그 방향(기각)과 지연평가/재귀·커링/펑터/클로저를 자랑하는 방향(채택 후보, 미확정) 정리 | 하 — 카피 소재, 설계 상의 필요 없음. 사용자가 최종 문구 고르면 반영 |
|
||||
| `v1-compat-plan.md` | v1 하위호환(compat) 레이어 — `quad-roblox-v1-compat` 패키지, v2→v1 단방향 브리지(`state:Observer()`+v1 프로퍼티 재대입), v2-in-v1/v1-in-v2 두 임베딩 방향의 기술 규칙까지 확정. quad2-try의 `quad-compat`은 빈 폴더로 실제 시도된 적 없었음을 확인 | 하 — Slot이 foreign Instance를 어떻게 다루는지만 Slot 코어 구현 시점까지 미결 |
|
||||
|
||||
## `archive/` — 완료됐거나 완전히 뒤집힌 것, 능동 참고 불필요
|
||||
|
|
|
|||
58
.claude/research/quad-recursive-acronym.md
Normal file
58
.claude/research/quad-recursive-acronym.md
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
# `quad` 재귀 약어(recursive acronym) 브레인스토밍
|
||||
|
||||
GNU("GNU's Not Unix")/WINE("Wine Is Not an Emulator")류로 **`Quad`가 스스로를
|
||||
가리키는 재귀 약어**를 만들어보자는 순수 카피 브레인스토밍. 설계 결정이
|
||||
아니라 나중에 루트 `README.md` 헤딩 등에 한 줄로 얹을 캐치프레이즈
|
||||
후보 모음이라 다른 `research/` 문서와 성격이 다름 — **상의 필요한 설계
|
||||
질문 없음, 착수 게이팅 없음.** 채택 시점/장소는 미정(README.md 헤딩이
|
||||
유력 후보).
|
||||
|
||||
형식: `Q-U-A-D` 4글자, `Q`는 "Quad" 자기 자신, 나머지 세 단어로 문장을
|
||||
완성.
|
||||
|
||||
## 방향 1 — 자학/자기지시 개그 (기각 — 톤이 안 맞아서 안 내걸기로 함)
|
||||
|
||||
이 프로젝트의 세션 히스토리 자체(잦은 뒤집힘·감사·재정정)를 소재로 한
|
||||
농담들. 재밌긴 한데 "우리는 맨날 뒤집혀요"로 읽혀서 배너로 내걸기엔
|
||||
부적절하다고 판단, 기록만 남김:
|
||||
|
||||
- **Quad Usually Avoids [the] DOM** — DOMless 렌더러라는 정체성을 WINE
|
||||
톤 그대로 부정문에 담음.
|
||||
- **Quad Unifies Attributes (via) Dispatch** — Store/State/Source가 전부
|
||||
같은 Dispatch 코어로 수렴한다는 아키텍처 요약.
|
||||
- **Quad Undoes All (that v1) Did** — 처음부터 다시 짠다는 프로젝트
|
||||
배경과 맞물림. ⭐ 이 세션에서 제일 웃겼던 후보.
|
||||
- **Quad Ultimately Avoids Destroy()** — `dispose()`가 `Slot`/`Instance`에만
|
||||
좁게 적용되고 나머지는 GC-native로 자동 정리된다는 설계 철학.
|
||||
- **Quad Undoes And Documents** — 결정이 뒤집히면 항상 `archive/`에
|
||||
원문+역전 이유+diff로 남기는 지금 워크플로우 자체를 정의로 씀.
|
||||
- **Quad Usually Audits, Daily** — `doc-check.py`+반복 감사 문화 패러디.
|
||||
|
||||
## 방향 2 — quad-v2의 매력(지연평가·재귀/커링·펑터·일급 클로저/팩토리)을
|
||||
자랑스럽게 (채택 후보, 미확정)
|
||||
|
||||
사용자가 실제로 내걸고 싶다고 지목한 방향. Haskell 비교 세션
|
||||
(`session/2026-08-13-02-haskell-comparison-dispatch-reentrant-bug.md`)에서
|
||||
이미 `:Compute`/`:With` ≈ Functor/Applicative, `Merged`/`Overridden` ≈
|
||||
Semigroup으로 대응 확인해둔 바 있어, 이 방향은 실제 설계와도 결이 맞음.
|
||||
|
||||
- **Quad Unwinds, Applies, Defers** — 동사 3박자. `Unwinds`=재귀(호출을
|
||||
풀어나감), `Applies`=커링(부분적용), `Defers`=지연평가. 리듬이 좋고
|
||||
외우기 쉬움. **1순위 추천.**
|
||||
- **Quad Unwinds Anonymous Deferrals** — `Unwinds`=재귀, `Anonymous`=일급
|
||||
익명 클로저(quad의 커링 스타일 자체가 중첩 익명함수라 실제 코드
|
||||
관용구와 정직하게 맞물림), `Deferrals`=지연평가+팩토리. **quad
|
||||
실코드 스타일과 제일 잘 맞는 후보.**
|
||||
- **Quad Unifies Applicatives, Deferred** — `Applicatives`가 펑터+커링을
|
||||
한 단어로 정확히 지칭, `Deferred`=지연평가. 제일 정밀하지만 캐주얼한
|
||||
배너보다는 학술적 각주 톤에 더 어울림.
|
||||
- **Quad's Unapplied Arguments, Deferred** — `Unapplied Arguments`가
|
||||
커링을 교과서 용어 그대로 짚음, `Deferred`가 지연평가. 문장 자체는
|
||||
예쁘지만 "Quad's" 소유격 시작이라 GNU/WINE 원형(명사로 바로 시작)과는
|
||||
살짝 다름.
|
||||
|
||||
## 결론
|
||||
|
||||
아직 미확정 — 사용자가 방향 2 안에서 하나를 고르거나 조합을 더 다듬은
|
||||
뒤 채택 위치(README.md 헤딩 등)를 정하면 반영. 이 문서 자체는 그 전까지
|
||||
카피 후보 저장소로만 존재.
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
# 2026-08-14 열세 번째 세션 — `quad` 재귀 약어 브레인스토밍
|
||||
|
||||
사용자가 GNU("GNU's Not Unix")/WINE("Wine Is Not an Emulator")류로
|
||||
`Quad`를 재귀 약어화해보고 싶다고 제안 — 순수 카피/톤 브레인스토밍,
|
||||
설계 결정이나 착수 게이팅과 무관.
|
||||
|
||||
## 1라운드 — 자학/자기지시 개그 방향
|
||||
|
||||
이 프로젝트 세션 히스토리 자체(잦은 뒤집힘·감사·재정정 루프)를 소재로
|
||||
한 후보들 제시: `Quad Usually Avoids [the] DOM`(DOMless 정체성),
|
||||
`Quad Unifies Attributes (via) Dispatch`(Dispatch 코어 수렴 아키텍처),
|
||||
`Quad Undoes All (that v1) Did`(전면 재작성 배경, 사용자가 제일 웃겨함),
|
||||
`Quad Ultimately Avoids Destroy()`(GC-native 철학), `Quad Undoes And
|
||||
Documents`(`archive/*-reversed.md` 역전 기록 문화), `Quad Usually
|
||||
Audits, Daily`(`doc-check.py`+반복 감사 문화 패러디).
|
||||
|
||||
사용자 반응: 웃기긴 한데 "나 맨날 바뀌어요"처럼 읽혀서 내걸긴 그렇다 —
|
||||
방향 기각, 내걸고 싶은 건 quad-v2의 실제 매력(지연평가·재귀/커링·펑터·
|
||||
일급 익명 클로저/팩토리)이라고 명확히 함.
|
||||
|
||||
## 2라운드 — 자랑하고 싶은 방향(FP 아름다움)
|
||||
|
||||
그 방향으로 재요청받아 4개 조합 제시:
|
||||
- `Quad Unwinds, Applies, Defers` — 동사 3박자(재귀/커링/지연평가),
|
||||
리듬 좋고 기억하기 쉬움. 1순위 추천.
|
||||
- `Quad Unwinds Anonymous Deferrals` — `Anonymous`가 quad의 실제 커링
|
||||
구현 스타일(중첩 익명 클로저)과 정직하게 맞물림.
|
||||
- `Quad Unifies Applicatives, Deferred` — 13번째 세션(Haskell 비교,
|
||||
`:Compute`/`:With` ≈ Functor/Applicative 확인)과 직결되는 정밀한
|
||||
버전, 다만 학술적 톤.
|
||||
- `Quad's Unapplied Arguments, Deferred` — 커링을 교과서 용어로 짚은
|
||||
명사구, 다만 소유격 시작이라 GNU/WINE 원형과 살짝 다름.
|
||||
|
||||
## 결론
|
||||
|
||||
사용자가 이 결과를 `.claude/research/`에 정리해두라고 지시(설계 문서라기보다
|
||||
나중에 README.md 헤딩에 쓸 카피 후보 저장 목적) — `research/
|
||||
quad-recursive-acronym.md` 신설, `README.md` 인덱스 반영. 최종 문구는
|
||||
미확정, 다음에 사용자가 고르면 반영.
|
||||
|
|
@ -1441,3 +1441,12 @@ pseudocode가 프로즈 정정과 모순됐던 것(가장 심각 — 실제 코
|
|||
**사전 존재 버그**(PostRef 도입 9차 세션 때 안 갱신됨, 이번 세션과
|
||||
무관)도 같이 잡혀 정정, `architecture.md`의 `Leaf.luau` 파일 트리에
|
||||
빠져있던 `Effect` 타입도 보강. `doc-check.py` ERROR 0 유지.
|
||||
|
||||
**2026-08-14 열세 번째 세션 — `quad` 재귀 약어 브레인스토밍**
|
||||
(`session/2026-08-14-13-recursive-acronym-brainstorm.md`)
|
||||
GNU/WINE류로 `Quad`를 재귀 약어화하는 순수 카피 브레인스토밍 —
|
||||
설계 결정/착수 게이팅과 무관. 자학 개그 방향(`Quad Undoes All (that
|
||||
v1) Did` 등)은 톤이 안 맞아 기각, 사용자가 실제로 내걸고 싶어한
|
||||
지연평가·재귀/커링·펑터·일급 익명 클로저 방향으로 `Quad Unwinds,
|
||||
Applies, Defers` 등 4개 후보 정리 — `research/quad-recursive-acronym.md`
|
||||
신설(나중에 README.md 헤딩 후보용), 최종 문구는 미확정.
|
||||
|
|
|
|||
Loading…
Reference in a new issue