하스켈 커뮤니티의 소식을 주간으로 정리한 Haskell Weekly의 492호입니다. 주요 글, 간단한 소식, 쇼 앤 텔, 참여 요청을 담았습니다.
Haskell Weekly의 또 다른 이슈에 오신 것을 환영합니다! Haskell은 안전하고 순수 함수형 프로그래밍 언어로, 빠르고 동시성을 갖춘 런타임을 제공합니다. 이것은 커뮤니티에서 벌어지는 일을 주간으로 요약한 내용입니다.
그래서 호기심이 생겼습니다. AlgDT의 어떤 성질 때문에 “합(sum)”과 “곱(product)” 타입이라는 이름이 붙었고, 어떤 성질들은 나중에 발견되었을까요? 조사를 계속하다 보니, 이 글은 결국 대수적 데이터 타입의 초기 역사에 대한 글로 확장되었습니다.
이는 Well-Typed가 GHC, Cabal, HLS 및 핵심 하스켈 도구 체인의 다른 부분에서 수행한 작업을 설명하는 하스켈 생태계 활동 보고서의 28번째 에디션입니다. 이번 호는 대략 2025년 6월부터 8월까지를 다룹니다. 또한 기존 ‘GHC 활동 보고서’라는 이름을 바꾸어, GHC 작업을 넘어선 내용을 다룬다는 점을 반영했습니다.
최근 버전에서 GHC가 제공하는 WASM 지원을 시험해 보고 싶었습니다. 이 블로그 자체에는 JS가 거의 없기 때문에, 다음과 같은 요구사항을 가진 작은 테마 토글을 만들어 좋은 시험대가 되겠다 생각했습니다: 1. 로직은 하스켈로 작성되어야 하며, 자바스크립트 로직을 감싸는 값 없는 셈(shim)이어서는 안 된다. 2. 가능하다면 표준 라이브러리에 없는 의존성을 최소 하나 사용해, 유용한 라이브러리를 활용하고 서투르게 재구현하지 않아도 되게 하자.
이 글에서는 효과를 다루는 다양한 접근이 표현력과 강한 정적 분석 사이의 스펙트럼 어디에 위치하는지, 그리고 동적 vs 정적 타입 언어의 대비처럼 효과 시스템에 더 많은 구조와 제약을 도입해 작성 가능한 프로그램의 수를 제한하는 것이 어떤 이점을 주는지 살펴봅니다.
요약: data Haskell을 되살리는 데 관심 있는 분 계신가요?
GHC가 두 타입이 동일한 런타임 표현을 가진다는 것을 알 때, coerce를 사용해 한 타입의 값을 다른 타입의 값으로 안전하고 비용 없이 바꿀 수 있게 해 줍니다. 주로 이러한 강제 변환의 기회는 newtype 사용에서 생기는데, 여기서 새 타입은 감싸고 있는 타입과 동일한 표현을 가질 것이 보장됩니다. 그러나 이는 타입 클래스, 타입 패밀리, GADT와 같은 다른 기능과의 상호작용 때문에 놀랄 만큼 복잡한 함의를 가지며, 런타임 표현을 더 정밀하게 추론하기 위한 타입 시스템의 한 측면으로서 역할(roles)이 도입되는 계기가 되었습니다. 이 에피소드에서는 coerce가 왜 유용한지, 그리고 역할이 무엇이 가능하고 무엇이 불가능한지 이해하는 데 어떻게 도움이 되는지 설명합니다.
Haskell Language Server 2.12.0.0 출시 글: Zubin
Hyperbole 0.5 - 사용자 정의 JS 상호운용, OAuth2, 트리거 액션 등 글: Sean Hess
Hyperbole는 타입 안전한 서버사이드 하스켈로 인터랙티브 HTML 애플리케이션을 작성할 수 있게 해 줍니다. HTMX, Elm, Phoenix LiveView에서 영감을 받았습니다.
foldrM 도전 과제 글: effectfully당신의 과제는 src/Lib.hs에 모나딕 버전의 foldr를 정의하는 것입니다.
오늘은 우리가 데이터 구조와 알고리즘으로 해 온 작업을 잘 마무리하는 시간이 될 것입니다. 지난 몇 주 동안 우리는 특히 깊이 우선 탐색(DFS)을 포함한 그래프 알고리즘을 다뤘습니다. 그리고 지난주에는 Trie 자료구조를 처음부터 구현했습니다. 오늘은 이러한 조각들을 결합하는 LeetCode 기준 ‘어려움(Hard)’ 문제를 풀어 보겠습니다!