프로젝트 소개

kanso (簡素)는 소스 파일에 결정 사항만 포함해야 한다는 아이디어를 중심으로 구축된 프로그래밍 언어입니다. 스타일 가이드, 린터 또는 코드 리뷰에서 관례적으로 강제하는 모든 사항을 컴파일러가 대신 강제합니다. 비정형적인 공백, 들여쓰기 또는 빈 줄 배치는 구문 오류가 되며, 이름에는 snake_case를 사용하고, 선언과 레코드 필드는 알파벳 순으로 정렬되며, 오버로드는 가장 구체적인 것이 먼저 오도록 인접하게 배치됩니다. 모든 프로그램에는 정확히 하나의 정형 렌더링 방식만 존재하므로 포매터가 존재하지 않습니다. README에서 강조하는 시맨틱에는 순수성과 설명으로서의 이펙트가 포함됩니다. print와 >> 시퀀싱 연산자는 런타임이 실행할 작업 설명을 생성하며, --plan 옵션을 사용한 check 명령은 이를 실행하는 대신 해당 설명을 보여줍니다. 실패는 예외가 아닌 값으로 처리됩니다. err reason과 none은 오버로드가 이를 처리할 때까지 전파되므로, 0으로 나누기나 범위를 벗어난 인덱싱은 충돌 대신 값을 반환합니다. 디스패치는 리터럴, 구체적 타입 및 제네릭에 대해 가장 구체적인 것부터 작동합니다. 이 언어는 타입 지정 필드를 가진 단일 생성자 레코드 타입, 위치 기반 생성 및 위치/키드 서브셋 형태의 구조 분해, 쉼표 없는 평면 병치 적용, 임의 정밀도 정수, 문자열 보간, 1부터 시작하는 인덱싱 리스트, 파이프된 값이 첫 번째 인수가 되는 도트 파이프 및 람다를 지원합니다. 추가적인 컴파일 타임 체크를 통해 사용되지 않은 바인딩, 사용되지 않은 표현식, 사용 전 재바인딩, 선언된 함수/타입/빌트인의 섀도잉을 거부합니다. xs[i] 또는 m[k] 인덱싱은 엄격하며, xs i는 예상되는 부재를 표현합니다. 모듈은 디렉토리 단위입니다. 하나의 네임스페이스를 공유하는 여러 파일이 하나의 모듈을 구성하며, 언더스코어로 시작하는 이름은 모듈 프라이빗으로 처리되고 사용되지 않은 프라이빗 선언은 오류가 됩니다. README는 tests/golden의 오류 코퍼스가 성공 코퍼스만큼 중요하다고 강조합니다. v0 섹션에서는 인정된 근사치와 미결 사항을 나열합니다. 엔드포인트 규칙은 컴파일 타임이 아닌 런타임에 확인됩니다. 제네릭 매개변수는 err 또는 none에 바인딩되지 않습니다. 정형 선언 순서는 하나의 해석 방식입니다. 파이프 타겟은 하나의 적용으로 파싱되며 호출 불가능한 타겟은 런타임에 실패합니다. if 형태는 임시적입니다. 네이티브 int는 int64이며, 인터프리터의 bigint와 달리 컴파일된 바이너리에서 오버플로 발생 시 결함으로 트랩됩니다. typesets, 레코드 업데이트, 빌드 리전, 프로세스, 이펙트 다형성 및 LSP는 아직 구현되지 않았습니다. 에디터 지원은 .kso 파일을 위해 JetBrains IDE 및 VS Code에서 사용할 수 있는 단일 TextMate 번들로 제공됩니다. 개발에는 유닛 테스트와 골든 파일 코퍼스를 포함하는 cargo test가 사용됩니다. 프로젝트는 MIT 라이선스로 제공됩니다. 문서, 사양 및 컴파일러 노트는 GitHub Pages 사이트에 게시되어 있습니다.