Haskell Weekly 제495호. 바이트코드 VM, 대규모 Haskell 활용 인터뷰, 효과 시퀀싱을 위한 Arrows, DAWG 사전 Haskell 포팅, 채용과 새 패키지 소식, 커뮤니티 참여 안내 등을 다룹니다.
Haskell Weekly의 또 다른 호에 오신 것을 환영합니다! Haskell은 안전하고 순수한 함수형 프로그래밍 언어로, 빠르고 동시성 있는 런타임을 갖추고 있습니다. 이 글은 Haskell 커뮤니티에서 일어나는 일을 주간으로 요약한 것입니다.
이 마지막 글에서는 바이트코드를 실행하는 가상 머신을 작성하고, 벤치마크합니다.
Stefan Wehr는 오펜부르크 응용과학대학의 교수입니다. 교수 임용 이전에는 업계에서 대규모 Haskell 코드베이스(컴파일러도 블록체인도 아닌)를 다뤘습니다. 그래서 우리는 대형 프로젝트에서 Haskell을 사용하는 법, 소프트웨어 아키텍처, 모듈성, 타입 클래스와 데이터 모델링, 그리고 함수형 프로그래밍 바깥에서 합(sum) 타입이 억압되는 현상, 아울러 현재 직장에서 Haskell을 가르치는 일 등에 대해 이야기했습니다.
지난번에는 효과를 작은 프로그램으로 순서화하는 흔한 방법들을 살펴봤습니다. 아직 읽지 않았다면 그 글부터 시작하길 권하지만, 굳이 아니라도 따라올 수는 있을 겁니다. 우리는 Applicative, Monad, Selective Applicative를 검토했고, 각각 고유한 트레이드오프가 있었습니다. 표현력과 분석 가능성 사이의 스펙트럼에서 각 접근이 어디에 위치하는지 파고들었고, 글 말미에는 아쉽게도 더 나은 무언가를 원하게 되었습니다. Monad는 우리가 작성하고자 하는 어떤 프로그램이든 표현할 수 있기 때문에 표현력 면에서는 군림하지만, 표현된 프로그램을 실행하지 않고 분석할 수 있는 능력은 사실상 제공하지 않습니다. 반면 Applicative와 Selective Applicative는 합리적인 수준의 프로그램 분석을 제공하지만, 복잡한 프로그램을 표현할 수는 없습니다. 상류 효과의 결과에 하류 효과가 실질적으로 의존하는 프로그램조차 표현하지 못하죠. 이러한 접근은 모두 동일한 Functor-Applicative-Monad 계층에 기반합니다. 이번 글에서는 그것을 잠시 내려놓고 전혀 다른 토대 위에서 다시 구축해 더 나아질 수 있는지 살펴보겠습니다.
FFI를 만드는 대신, C++ 라이브러리를 전면적으로 Haskell로 이식했으며, 그 결과 기존 DAWG 패키지들을 (부분적으로) 능가한다는 사실이 드러났습니다.
Haskell을 사랑하나요? Stack Builders에서 원격 파트타임 Haskell 계약자로 함께하세요!
간단하고 아름다운 CLI 출력. 선언적이고 합성 가능한 섹션, 트리, 테이블, 대시보드, 그리고 콘솔에서 동작하는 상호작용형 Elm 스타일 앱을 구축하세요.
parallel패키지의 새 릴리스를 발표합니다! 지난 릴리스는 2018년이었죠. 그동안 몇 가지가 바뀌었습니다.
sqlc-hs를 발표하게 되어 기쁩니다 — sqlc용 Haskell 코드 생성기 플러그인으로, SQL 쿼리에서 곧바로 Haskell 타입과 함수를 생성할 수 있게 해줍니다.
업데이트를 올린 지 조금 되었는데, 지금이 커뮤니티의 의견을 다시 한 번 여쭙기 좋은 때라고 생각했습니다.
프로덕션 Haskell 코드를 읽다 보면 처음엔 혼란스러워 보이지만 자주 등장하기 때문에 배워둘 가치가 있는 관용구들을 마주칠 때가 있습니다.
지난 2주 동안 우리는 동적 계획법의 서로 다른 몇 가지 문제를 살펴봤습니다. 이들은 더 단순한 1차원 문제들이었습니다. 하지만 동적 계획법은 여러 차원에 걸쳐 작업할 때 가장 강력해지는 경우가 많습니다. 오늘의 문제는 실제로 2차원 공간에서 동적 계획법을 적용할 수 있는 문제를 다룹니다.
GHC 운영위원회는 새로운 위원 후보를 모집하고 있습니다.