diff options
| author | eunhhu <[email protected]> | 2026-09-30 15:29:49 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-09-30 15:29:49 +0100 |
| commit | 57fc44fc853da1c271f287afde62cfb4077930d2 (patch) | |
| tree | fd4fddad2ba14f0dc188e015d9119342d2cbd3aa /docs | |
| parent | 999439fcb5eeaec6fa5c3d20290e9edf18d70c66 (diff) | |
| download | pure-57fc44fc853da1c271f287afde62cfb4077930d2.tar.gz pure-57fc44fc853da1c271f287afde62cfb4077930d2.zip | |
Say that bool is in, and what its first stage found (016)
016's first stage is built and checked: no opcode was new, a stored
send's bool was refused on the way back in (found by server_meaning's
restart, fixed), -0 becomes false as 015 says zero has no sign, and
True in JSON is no JSON at all. i64 is what is left of 016.
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/design/016-bool-and-i64.md | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/docs/design/016-bool-and-i64.md b/docs/design/016-bool-and-i64.md index ead3ae8..5164a7c 100644 --- a/docs/design/016-bool-and-i64.md +++ b/docs/design/016-bool-and-i64.md @@ -1,6 +1,6 @@ # 016 — 참·거짓과 정확한 정수: `bool`과 `i64` -작성일: 2026-09-30. 상태: 1단계(`bool`) 구현 중, 2단계(`i64`) 설계. +작성일: 2026-09-30. 상태: 1단계(`bool`) 구현, 검사로 고정. 2단계(`i64`) 설계. aup의 v0c에 남은 것(aup `docs/design/002-dsl-direction.md`의 `i64 bool`)이고, [015](015-boundary-meaning.md)가 정한 경계마다의 값의 뜻에 두 종류를 더한다. @@ -54,6 +54,24 @@ aup의 원칙(002)을 따른다. 위치가 정수가 아니듯 참·거짓은 � **옮기는 비용.** 예제의 수 깃발을 bool로 바꾼다(`done`, `urgent`, `running`, `holding`). 저장된 0과 1은 위의 교체 규칙으로 그대로 이어진다. +### 1단계에서 알게 된 것 + +- **새 명령은 필요 없었다.** 처음 설계는 BOOL_CONST와 BOOL_TEXT를 더하려 했다. CONST와 NUM_TEXT의 인자 하나(0이던 + 자리)로 충분했다. 검증기의 종류와 타입 번호만 늘었고, 실행기는 bool을 수의 칸의 0과 1로 그대로 돈다(잎 단위 실행도). +- **저장된 보냄의 bool을 거절하던 곳이 있었다.** 출력의 필드 타입을 저장소에서 다시 읽는 검사가 `>= 행`으로 bool(6)까지 + 막아, bool 필드를 가진 출력의 보냄이 기다리는 노드는 다시 시작하지 못했다. `server_meaning`의 재시작 출구가 잡았고, + 고쳤다. test-module이 잡지 못한 까닭은 bool 보냄을 저장하고 다시 여는 경우가 없어서였다. 그 경우를 더했다(고치기 전의 + 코드로는 실패한다). +- **−0은 `false`로 옮긴다.** 수가 bool이 될 때 0과 1만 옮기기로 했는데, 015가 0에는 부호가 없다고 정했으므로 −0도 0이다. + 처음 구현은 −0을 기본값으로 보냈다. +- **JSON의 `True`는 타입이 아니라 문법의 거절이다**(`json`). 1, 0, `"true"`, `null`, 배열은 `json_type`이다. + +검사: Pure test-module에 bool 검증 거절 28가지와 실행·메시지 바이트·보냄·링크·교체·저장(보냄 포함)을 더했고, 레인 대조의 무작위 +생성기가 수와 bool을 나눠 만든다(3,600 집계가 비트까지 같다). `server_meaning`은 값 67개마다 bool 필드를 싣고 나가는 길 일곱에서 +본다(거절 52가지, bool은 거절의 종류까지). HTTP에서 bool 보기의 글자와 bool 인자도 본다. aup는 bool 진단 20가지, 받아들이는 +형식, 출력마다 `true`·`false`인지 보는 검사(파이썬의 `True == 1`을 같게 보지 않는 비교)를 더했다. Vega는 bool 보기가 CLI, TUI, +문장, 웹에서 `true`·`false`로 보이는지 본다. 커밋: Pure `86fd4f7`·`d1c90e2`·`d415a5a`, aup `b8e3faa`, Vega `72ecae6`. + ## 2단계: `i64` 1단계가 들어간 뒤 같은 방식으로 한다. 정할 것을 미리 적는다. |
