Gleam의 멋진 점들

4 hours ago 2

Gleam은 폐기 예정 표시, 할 일, 제네릭, 패턴 매칭, 오류 처리를 언어 차원에서 일관되게 제공해 단순성과 가독성을 높임 @deprecated와 todo를 통해 새 API로의 이동 경로와 미완성 작업의 세부 사항을 코드에 직접 남길 수 있음 제네릭은 함수 타입 표기에 자연스럽게 녹아 있어 간결하지만, 제약된 제네릭 같은 강력한 기능 일부는 포기함 값 비교, 목록 분해, 별칭 지정을 모두 case로 처리하며, 여러 기능을 조합하는 Elixir와 달리 한 가지 명시적인 방식에 집중함 예외와 null 대신 Option과 Result를 사용해 값의 부재, 기본값, 실패를 타입 시스템 안에서 다룸 언어에 포함된 개발 편의 기능 @deprecated 속성은 함수가 폐기 예정임을 표시하고, 문자열 메시지로 대체할 새 함수를 안내함 GraphQL의 @deprecated 데코레이터와 같은 방식으로 동작함 라이브러리 사용자는 컴파일러 메시지를 통해 새 버전의 함수로 이동할 경로를 확인할 수 있음 todo는 주석이나 별도 린터에 의존하지 않는 기본 언어 구문임 todo as "maybe, should do something"처럼 남은 작업과 필요한 세부 사항을 함께 기록할 수 있음 제네릭은 별도 문법을 크게 늘리지 않고 함수의 타입 표기에서 처리함 fn Mistakes(val: woah) -> woah처럼 입력과 반환에 같은 타입 변수를 사용함 Go는 1.18에서 제네릭과 타입 제약 인터페이스를 도입했지만, Gleam은 더 단순하고 읽기 쉬운 형태를 택함 대신 제약된 제네릭처럼 더 강력한 구성이 제공하는 기능 일부는 사용할 수 없음 case 중심의 패턴 매칭 BEAM 언어의 핵심인 패턴 매칭을 Gleam에서는 case 표현식으로 일관되게 처리함 정수가 0인지 확인할 때 0 -> True, _ -> False처럼 각 경우의 결과를 명시함 Elixir는 매크로, atom, guard, 타입 검사, 오버로드, 패턴 매칭을 조합할 수 있지만, Gleam은 한 가지 단순한 방식에 집중함 중첩 목록도 [[_, _, ..] as first, ..]처럼 분해하면서 첫 번째 목록에 별칭을 지정할 수 있음 예외와 null 없는 오류 처리 Gleam의 타입 시스템은 예외 없이 오류와 값의 부재를 처리하도록 설계됨 Option(Int)가 None일 때 option.unwrap(x, -1)로 호출자가 정한 기본값을 반환할 수 있음 ...

Read Entire Article