Haskell Weekly 커뮤니티 소식 모음: 상태 관리, Philip Wadler 인터뷰, 함수형 옵틱스 입문, 재생에너지 분야에서의 Haskell, 채용 공고, 간단한 소식, 쇼앤텔, 참여 요청.
Haskell Weekly의 또 다른 호에 오신 것을 환영합니다! Haskell은 빠르고 동시성이 뛰어난 런타임을 갖춘 안전한 순수 함수형 프로그래밍 언어입니다. 이는 커뮤니티에서 벌어지는 일을 주간으로 요약한 것입니다.
저는 Haskell로 아주 작은 신경망 라이브러리를 만들고 있습니다. 그 요구사항 중 하나는 어떤 그래디언트에 따라 가중치를 업데이트할 수 있어야 한다는 것입니다. 다른 프로그래밍 언어에서는 가중치 변수를 변경(mutating)함으로써 이 작업을 수행할 수 있습니다. 하지만 Haskell에서는 바깥쪽 가장자리까지는 가능하면 순수성을 유지하려고 합니다. 때로는 이를 “함수형 코어, 명령형 셸(functional core, imperative shell)”이라고 부르기도 합니다.
Philip Wadler는 특히 복잡한 아이디어를 단순하고 우아하게 설명하는 독특한 능력으로 잘 알려지고 널리 인정받는 연구자입니다. 그는 1977년에 스탠퍼드에서 학사 학위를, 1979년과 1984년에 각각 CMU에서 석사와 박사 학위를 받았습니다. 2023년에는 영국왕립학회(Royal Society) 펠로로 선출되는 영예를 얻었고, 이로써 아이작 뉴턴과 찰스 다윈과 같은 위대한 과학자의 반열에 합류했습니다. Wadler는 스스로를 이론을 실천으로, 실천을 이론으로 가져오는 것을 좋아하는 사람이라고 설명합니다. 이 에피소드에서 우리는 그의 방대한 연구, 모나드와 타입 클래스의 이야기, 범주론과 호모토피 타입 이론에 대해 이야기합니다. 대화 전반에 걸쳐, 그의 뛰어난 논문들 뒤에 있는 철학과 방법을 이해하려는 저의 열망에 대해 그는 과학의 요점은 다른 사람들이 그 위에 쌓아올릴 수 있도록 아이디어를 명확히 전달하는 데 있다고 거듭 강조합니다.
저는 개인적으로 함수형 옵틱스가 정말 쉽게 파악할 수 있는 개념이라고 생각하지만, 현재로서는 라이브러리 구현 세부사항, 난해한 문서, 낯선 기호의 이국적인 사용 때문에 배움이 필요 이상으로 어렵습니다. 그림 한 장이 천 마디 말보다 낫다는 말이 있듯이, 여기서는 우리가 논의할 개념을 설명하기 위해 그래픽 표기법을 도입하고 사용하겠습니다.
제 배경은 소프트웨어 엔지니어가 되는 전형적인 경로와는 다릅니다. 저는 컴퓨터 과학을 전공하지 않았습니다. 대신 HTW Berlin에서 재생 에너지 시스템으로 학사와 석사를 모두 취득했습니다. 어찌어찌 그 여정이 저를 전문 Haskell 개발자로 이끌었고, 분산 전력 관리 및 송전 시스템을 구축하고 있습니다. 이 글에서는 제가 Haskell에 입문하게 된 여정을 공유하고, 주류 채용 시장에서는 존재감이 크지 않지만 Haskell이 재생에너지 분야에서 아직 발굴되지 않은 잠재력을 지니고 있다고 믿는 이유를 설명하겠습니다.
저희는 몇 년째 인턴 프로그램을 운영 중이며, 많은 채용이 r/haskell에서 이뤄졌습니다. Mercury 인턴은 실제 프로젝트에서 고객용 기능을 만들고, Mercury의 운영을 개선하거나 내부 개발자 도구를 개선합니다. 미국 또는 캐나다에서 채용하며, 원격 또는 샌프란시스코, 뉴욕, 포틀랜드 근무가 가능합니다.
template-haskell 인터페이스의 안정적인 서브셋을 공개하는 두 라이브러리의 첫 릴리스를 발표하게 되어 기쁩니다.
여러 cabal 하위 명령을 단일 실행 파일이 제공하는 사용자에게 경고하고 의견을 수렴하기 위해, 제안된 변경 사항을 여기에서 알리고자 합니다.
오늘은 이름을 붙이기 전에 인자를 어떻게 변환할지 살펴보겠습니다.
cabal-matrix의 초기 릴리스를 발표하고자 합니다. 이는 cabal 패키지를 위한 매트릭스 빌더입니다. 목적은 다양한 설정, 예를 들어 서로 다른 컴파일러 버전이나 의존성 버전에서 빌드를 실행하는 것입니다.
이제 Haskell/Rust LeetCode 비교의 마지막 구간을 시작하려 합니다(당분간). 이 묶음에서는 코딩 인터뷰에서 흔히 골칫거리가 되는 동적 프로그래밍 문제들을 간단히 살펴보겠습니다. 1차원 문제를 몇 가지 다룬 다음, 다차원에서의 DP를 보여줄 것입니다. Haskell에는 동적 프로그래밍과 관련해 몇 가지 흥미로운 특이점이 있으므로, Rust와의 비교를 통해 그것을 이해해 보겠습니다.
미니맥스 AI와 알파-베타 가지치기를 사용해 보드 게임 리버시(오델로)를 구현하는 데 성공했습니다. 또한 미니맥스 AI에 더욱 잘 맞는 Spot도 구현했지만, 이는 아직 예정 중입니다.