표준 라이브러리와 런타임

표준 라이브러리 개요

일상 작업과 실패 방식에 맞는 표준 라이브러리 기능을 고릅니다.

API 목록보다 하려는 일부터 고르세요. 표준 라이브러리는 값, 컬렉션, 파일, 호스트 경계에 필요한 작고 검사 가능한 기능을 제공합니다. 목록에 없는 이름과 멤버는 호스트 언어에서 대신 찾지 않고 검사 단계에서 거부됩니다.

기능 선택하기

하려는 일먼저 볼 곳실패 형태
텍스트 출력, 값 변환, 유니코드 확인, 값 변환코어 라이브러리값, Option, 또는 도우미가 선언한 Result
순서 있는 항목 저장, 키 조회, 중복 없는 값 보관컬렉션 연산주로 값, bool, Option
파일 하나를 통째로 읽거나 쓰기FS.readText, FS.writeText, FS.readBytes, FS.writeBytesResult
파일을 연 채 여러 작업 수행openusing 또는 deferResult와 어휘 범위 정리
출력, 숫자, 순서, 실행 중단 이해실행 환경 동작명시된 값 또는 명확한 실행 오류

순서 있는 항목은 Array, 키로 값을 찾을 때는 Map, 중복 없는 값은 Set을 고르세요.

값이 없는 것이 정상이라면 Option을 사용합니다. 예를 들어 맵에 키가 없을 수 있습니다. 외부 입력이나 호스트 작업이 이유와 함께 실패할 수 있다면 Result를 사용합니다. 실행 오류는 실행 중 계약을 어긴 경우이고, 잘못된 호출이나 타입은 실행 전에 정적 진단으로 거부됩니다.

일상적인 조합

다음 프로그램은 텍스트를 정수로 해석하고 배열을 변환합니다. toInt는 텍스트에 정수가 없을 수 있으므로 Option을 반환하고, map은 입력 순서를 유지한 새 배열을 반환합니다.

TOPAZ
let parsed: Option<int> = toInt("42")
let values: Array<int> = Array.of(1, 2, 3)
let doubled = map(values, value => value * 2)

print("{parsed}:{doubled}")
출력
Some(42):[2, 4, 6]

Some(42)는 변환 성공을 그대로 드러냅니다. 정수로 읽을 수 없는 텍스트였다면 첫 부분은 None이 됩니다. 라이브러리는 임의로 0을 만들거나 잡을 수 있는 예외를 던지지 않습니다.

기능이 놓이는 곳

print, toInt, Some, None, Ok, Err, map, filter, reduce 같은 기본 함수와 생성자는 가져오기 없이 사용합니다. Math, Bytes, Hash, FS, Path 같은 내장 이름공간은 한 가지 기능군을 담습니다. 패키지 코드는 현재 도구 모음이 제공하는 고정된 std.* 모듈도 사용할 수 있습니다. 이 모듈은 동적으로 탐색하는 호스트 이름공간이 아니라 검사되는 내보내기입니다.

더 넓은 기능에는 인코딩, 해시, 경로, 명령행 인수, 정규식, CSV, TOML, JSON, URL, 날짜, 큰 정수, 십진수, 생성기, 파서, 제한된 호스트 기능이 있습니다. 비슷한 이름의 호스트 API가 있을 것이라고 추측하지 말고 해당 페이지에서 정확한 시그니처와 실행 대상을 확인하세요.

흔한 수정: 표준 모듈을 가져오는 것만으로 파일 시스템, 네트워크, 시계, 환경 변수, 프로세스, 데이터베이스 권한이 생기지 않습니다. 호스트 작업은 해당 기능을 제공하는 프로필과 환경에서만 동작합니다.

정확한 경계

  • 별도 표기가 없으면 문자열 위치는 바이트가 아니라 유니코드 스칼라입니다.
  • 컬렉션 순회와 스냅샷은 문서에 정한 순서를 지킵니다.
  • 파싱과 디코딩은 선언된 Option 또는 Result 실패 방식을 유지합니다.
  • 잘못된 산술과 계약 위반은 조용히 다른 값으로 바뀌지 않습니다.
  • Test.*, 자유 함수 assert, std.test는 테스트 프로필 전용입니다.
  • 목록에 없는 직접 이름, 가상 모듈, 멤버는 정적 진단입니다.

작업별 다음 문서