aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/research/140-spec-suite.md9
1 files changed, 9 insertions, 0 deletions
diff --git a/docs/research/140-spec-suite.md b/docs/research/140-spec-suite.md
index d6f6a26..6bb2138 100644
--- a/docs/research/140-spec-suite.md
+++ b/docs/research/140-spec-suite.md
@@ -494,6 +494,15 @@
3. let의 리스트는 핸들러의 맨 바깥 블록에만 두고, 비우지 못한다(`[]`를 대입하지 못한다). 블록마다 새로 짓는 길이의 표를 fn
`codes`로 옮겼다(fn은 부를 때마다 제 리스트를 가진다). 줄은 거의 늘지 않았지만, 구조가 명세가 아니라 언어를 따른다.
+셋의 주인은 다르다. 쌓임을 막는 규칙(둘 이상의 명세)은 핵에만 걸린다.
+- 1은 aup의 일이다. Pure의 함수 서명은 이미 리스트(타입 4)를 받고, 리스트 값은 번호로 옮겨지며 바뀌기 전에 복사된다(008의
+ "레코드 안의 리스트"). 레코드에 담긴 리스트가 넘어가는 것이 그 증거다. 맨 리스트를 거절하는 것은 aup의 컴파일러다.
+- 3도 aup의 일이다. let의 리스트 하나는 핸들러나 fn의 이벤트 리스트 하나다. 블록마다 비우려면 aup가 LIST_REMOVE로 비우거나(항목
+ 수에 비례) 블록의 리스트를 따로 둬야 한다. Pure에 한 번에 비우는 명령이 필요한지는 아직 모른다.
+- 2만 Pure의 상태 종류에 닿는다. 레코드 하나인 상태는 aup가 레코드 필드처럼 펼쳐 상태 여럿으로 둘 수 있다. 하지만 바이트 하나인
+ 상태는 Pure의 상태 종류에 없다(text는 UTF-8을 묻는다). 핵에 종류를 더하거나, aup가 숨은 항목 하나의 리스트로 낮춰야 한다.
+- 작은 블록 fn의 인라인(아래 "시간이 가는 곳")도 aup의 일이다.
+
**줄을 길게 한 것.** 132 대 81이다. 닫는 괄호의 줄을 빼면 114다.
- 닫는 괄호의 줄이 18줄이다(파이썬은 들여쓰기).
- 우회의 레코드 셋(`Code`, `Lengths`, `Inflated`)과 항목 하나를 비우는 줄이 11줄이다.