Commit graph

3 commits

Author SHA1 Message Date
71729db816
decide(base): Compute 커링, state:Apply 확정, Effect Subscribe/Unsubscribe, 이중 바인딩 금지
- :Compute(fn)에도 Observer/Effect와 동일한 커링 권장 노트 추가
- state:Apply(factory) 확정 — ":With"/":Compute" 자동 등록 조합기였던
  백로그안 기각, Modifier:Apply와 동일한 순수 체이닝 설탕으로 재정의
- EffectHandle:Subscribe()/:Unsubscribe() 신설 — leaf 없이 쓰는 독립
  Effect 지원, :Unsubscribe()는 마지막 cleanup을 1회 트리거해야 함
- Observer/Effect 이중 바인딩(leaf 부착 + 수동 Subscribe) 금지 확정,
  Bound 플래그로 즉시 error
- ROADMAP.md M3/question.md에 반영, effect-plan.md 오기 정정
2026-08-07 16:59:40 +09:00
8fc6dd3b8c
decide(base): Observer 즉시실행 확정, Effect가 Observer를 조합하도록 확정
- state:Observer(fn)는 등록 즉시 1회 실행되는 것으로 확정 — 초기화 순서
  디버깅 문제를 피하고, store-bind 프로퍼티 핸들러가 "초기값 적용"과
  "이후 변경 반영"을 같은 코드 경로로 통일할 수 있게 됨.
- Effect(fn, state?)로 확정 — state 생략 시 기존 스펙(설치 1회 + 확정
  정리) 유지, state 지정 시 내부적으로 state:Observer(...)를 조합해
  재실행 + 자동 cleanup 배선(React useEffect와 동형). 다수 의존성은
  :With(...)로 묶어서 넘김. 여전히 자유 함수(메소드 아님) — leaf 생명주기
  바인딩을 state가 소유하지 않아서.
- fn 커링 스타일을 Effect/Observer 공통 모듈화 관용구로 권장, state:Apply
  커링 조합기 아이디어는 백로그로만 기록.
- question.md 0번의 Effect/Observer 열린 질문 해소.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-07 16:20:54 +09:00
226490153e
docs: Blocker/Effect를 base/additional-primitives.md에서 별개 파일로 재분리
State 작업 시 Effect까지 같이 볼 필요는 없다는 지적(둘은 무관한 프리미티브)과
기존 프리미티브당 1파일 컨벤션(modifier-plan.md, slot-plan.md류)에 맞춰
base/blocker-plan.md, base/effect-plan.md로 재분리. Blocker는 store-semantics.md
교차 참조를 유지, Effect는 독립 파일로 완전히 분리. 전체 상호참조 경로 갱신.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-07 14:45:57 +09:00