Trawling

개발 · 최신기사

언어와 프레임워크, SDK와 개발 방식·도구의 변화를 다룹니다.

발행

Teal - 정적 타입을 더한 Lua 방언

Teal은 배열, 맵, 레코드, 인터페이스, 유니온 타입, 제네릭을 타입 주석으로 표현하는 Lua 방언입니다. 컴파일러 tl이 .tl 파일을 .lua 파일로 변환하며, Lua의 간결함과 이식성, 임베딩 특성을 유지하는 데 초점을 둡니다.

발행

순환 트레이트 구현에서 외부 증명 방식이 통하지 않는 이유

Rust의 슈퍼트레이트를 확인하는 두 방식, 모듈식 증명과 외부 증명을 비교합니다. 외부 증명은 호출자가 슈퍼트레이트까지 확인하게 하지만 unsafe 트레이트에서는 잘못된 구현을 호출자가 신뢰해야 하는 모순이 생기므로, 글은 모듈식 증명이 필요하다고 주장합니다.

발행

양방향 타입 슬라이싱 — 타입 정보가 나온 이유를 프로그램 조각으로 설명하기

이 논문은 표현식의 타입이 무엇인지뿐 아니라, 프로그램의 어떤 부분이 그 타입을 만들었는지 설명하는 타입 슬라이싱 이론을 제시합니다. 타입을 내부에서 계산하는 합성(synthesis)과 주변 문맥에서 요구하는 분석(analysis)을 나눠 각각 최소 프로그램 조각으로 보여주며, 타입 오류 설명에도 적용합니다.

발행

Elm 1.0을 향한 또 한 걸음

Elm 0.19.3은 컴파일러 내부 타입을 더 구체화해 잘못된 데이터 표현과 그래프 순환 오류를 줄입니다. Evan Czaplicki는 이 작업을 Acadia 컴파일러와의 기반 정렬 과정으로 소개하며, 타입으로 불변 조건을 강제하는 설계 사례를 설명합니다.

발행

타입클래스와 모듈은 서로 다른 문제를 풉니다

타입클래스는 여러 타입에 같은 연산 이름을 쓰는 임의 다형성을, 모듈 시스템은 프로그램을 인터페이스와 구현 단위로 나누는 모듈 추상화를 목표로 합니다. 글은 두 기능의 차이를 예시와 언어별 구현으로 설명하며, 작성자는 대규모 프로그램을 구성할 때 모듈 추상화를 더 중시합니다.

발행

Rust로 살펴보는 ‘검증하지 말고 파싱하라’

‘검증하지 말고 파싱하라’는 원칙을 Rust의 타입으로 설명합니다. 비어 있지 않은 컬렉션, 절대 경로, 0이 아닌 정수처럼 조건을 타입에 담으면 이후 코드에서 같은 검사를 되풀이하지 않아도 됩니다.

발행

구성 요소의 합보다 더 강한 타입

Rust의 `std::path::Component` 열거형을 각 변형을 나타내는 별도 타입으로 나눠 경로 처리 함수의 입력 조건을 타입으로 표현한 사례입니다. `NormalComponent`와 `ParentDirComponent`를 쓰면 경로 결합과 디렉터리 탐색에서 잘못된 구성 요소를 넘기는 실수를 줄일 수 있습니다.

발행

프로그래밍 언어의 타입 시스템에 별칭 추론을 맡기지 마세요

Futhark는 배열을 복사하지 않고 갱신하는 기능의 안전성을 보장하려고 소비(consumption)와 별칭(alias)을 타입 검사에서 추적합니다. 이 글은 추상 타입과 고차 함수가 추적 규칙을 복잡하게 만드는 과정을 설명하고, 자기 별칭(self-aliasing) 처리와 매개변수성(parametricity)을 활용하는 설계안을 제시합니다.