Zero 공식 문서: 개념, 예제, 실습
예제 중심의 간결한 Zero 레퍼런스. 개념을 읽고 코드를 본 뒤 Coddy 여정에서 직접 연습하세요.
시작하기
- Zero란Zero는 Vercel Labs에서 만든 실험적인 시스템 프로그래밍 언어로, 사람뿐 아니라 AI 에이전트를 1급 사용자로 다루도록 설계되었습니다. Zero가 무엇이고 왜 만들어졌는지 살펴봅니다.
- Zero 설치curl 명령 한 줄로 Zero 컴파일러와 툴체인을 설치하는 방법을 정리했습니다. 설치, PATH 설정, 그리고 `zero --version`으로 동작 확인까지 한 번에 살펴봅니다.
- Hello, WorldZero로 작성하는 첫 번째 프로그램. 정석 hello-world 예제의 모든 토큰이 무엇을 뜻하는지, `zero run`으로 어떻게 실행하는지, 왜 다섯 줄짜리 프로그램에서도 이미 `World`, `raises`, `check`가 등장하는지 살펴봅니다.
- Zero CLI`zero` 커맨드라인 도구 한 바퀴. 일상적으로 사용하게 될 서브커맨드들과 각각의 출력, 그리고 모든 명령을 에이전트가 읽기 좋은 피드로 바꿔 주는 `--json` 플래그까지 살펴봅니다.
- Zero 패키지Zero 패키지 구조를 정리했습니다. `zero.json` 매니페스트, `src/` 디렉터리, 그리고 같은 소스 트리에서 실행 파일·라이브러리·테스트를 만들어내는 타겟 시스템까지 살펴봅니다.
언어 기초
- let 바인딩Zero에서 `let`이 어떻게 동작하는지 정리했습니다. 지역 바인딩 선언, 타입 추론과 명시적 어노테이션, 그리고 왜 Zero가 여러 키워드 대신 단일 바인딩 형태를 쓰는지 살펴봅니다.
- 원시 타입Zero가 기본으로 제공하는 내장 타입들. 모든 너비의 부호 있는·부호 없는 정수, 실수, 불리언, 문자, 문자열, 그리고 빈 타입 Void까지 정리했습니다.
- 함수Zero에서 함수가 어떻게 동작하는지 정리했습니다. `fun` 키워드, 타입이 붙은 매개변수, 반환 타입, `pub` 가시성 한정자, 그리고 함수 시그니처에서 `raises`가 하는 역할까지 살펴봅니다.
- If/ElseZero에서 `if`와 `else`가 어떻게 동작하는지 정리했습니다. 불리언 조건, 분기 본문, 참/거짓 강제 변환이 없는 이유, 그리고 더 풍부한 분기를 위한 `match`와의 관계까지 살펴봅니다.
- while 루프Zero에서 지금 `while` 루프가 어떻게 동작하는지 정리했습니다. 조건, 루프 본문, 초기 단계에 `for`와 `do-while`이 빠진 이유, 그리고 루프와 명시적 효과가 어떻게 맞물리는지 살펴봅니다.
데이터 모델링
- shape (구조체)shape는 Zero의 구조체 같은 곱타입입니다. 선언하고, 값을 만들고, 필드를 읽고, 함수에 전달하는 방법을 공식 예제와 함께 정리했습니다.
- 제네릭Zero에서 제네릭이 어떻게 동작하는지 정리했습니다. 함수와 shape의 타입 매개변수 선언, 제네릭 함수 호출, 그리고 긴 매개변수화를 깔끔한 이름으로 바꿔 주는 타입 별칭 패턴까지 살펴봅니다.
- enumZero에서 `enum`이 어떻게 동작하는지 정리했습니다. 명명된 변종의 고정 집합을 선언하고, 값을 비교하고, `enum`(평범한 태그)과 `choice`(태그된 합타입) 사이의 경계를 어떻게 그을지 살펴봅니다.
- choice와 matchZero에서 `choice`로 태그된 합타입을 선언하고 `match`로 변종을 망라적으로 분기하는 방법 — Zero 식의 합타입과 패턴 매칭입니다.