Haskell 튜토리얼과 Ormolu의 최신 소식, 그리고 Bazel 및 MMark에 관한 앞으로의 계획을 공유합니다.
2026년 8월 5일 게시
지난 8년을 보낸 회사를 떠난 일이, 제 경우에는 자연스럽게 추억을 되짚는 계기가 되었습니다. 그 짧은 여정이 남긴 것 중에는 향수도 조금 있었고, 그 덕분에 대략 2016년부터 2020년까지의 시기가 특히 생생하게 떠올랐습니다. 저는 이 시기가 전반적인 Haskell 커뮤니티와 생태계, 그리고 개인적으로도 매우 흥미롭고 결실이 많았던 때라고 생각합니다. 돌이켜 보면, 이 시기는 제가 Haskell 관련 활동을 가장 활발히 하던 정점이었습니다. 이후 직업적 관심은 확장 가능한 빌드 시스템, 특히 Bazel로 옮겨 갔고, 개인적 관심은 소프트웨어 개발만으로는 답할 수 없는 질문들에 다가가려는 시도로 철학과 회화로 이동했습니다.
이제 꽤 시간이 흘렀습니다! 시간은 정말 빠르네요. 손에 약간의 여유 시간이 생긴 김에, 단순히 기억하고 회상하는 대신 몇 가지 유용한 일을 하기로 했습니다. 이 글에서 그것들을 소개합니다. 사실 일종의 공개 발표입니다.
제가 자랑스럽게 생각하는 것 중 하나는 제 Haskell 튜토리얼입니다. 다소 자만처럼 들릴 수도 있겠지만, 지금 다시 읽어 보니 AI 이전에 이 글들에 얼마나 많은 작업이 들어갔는지 새삼 깨닫게 됩니다. 당시에는 좋은 튜토리얼을 쓰고 싶다면 논문, 박사 학위 논문, 중요한 블로그 글을 읽어야 했습니다. 물론 먼저 그런 자료들을 찾아내야 했습니다. 산문 한 줄을 쓰기 전에도 많은 읽기가 필요했습니다. 시간 투자도 상당했습니다.
이 튜토리얼들이 오늘날에도 여전히 유용할 수 있기를, 그리고 Haskell의 미묘한 부분을 이해하는 일이 여전히 가치 있기를 바랍니다. 그런 믿음에 따라, 각각에 다음 세 가지 작업을 했습니다.
같은 페이지에 있는 추천 튜토리얼 목록도 업데이트했습니다. 제 목표는 Haskell에 관한 훌륭한 글을 합리적이고 객관적이며 최신 상태로 선별하는 것이었습니다. 그 목표를 달성했는지는 여러분의 판단에 맡기겠습니다.
저는 2019년에 Ormolu를 만들었고, 그 뒤로 계속 설계를 다듬어 왔습니다. 관련 작업은 mrkkrp/ormolu에서 계속하고 있으며, 최신 Ormolu Live는 이제 https://ormolu-live.markkarpov.com에서 이용할 수 있습니다. Ormolu 0.8.2.0은 새 저장소에서 만든 첫 릴리스이며, 이미 Hackage에 올라가 있습니다. 저는 그곳에서 계속 ormolu 패키지를 유지 관리하고 있습니다.
혼동을 피하기 위해 말씀드리면, tweag/ormolu 저장소는 별도로 계속됩니다. Hackage, Stackage 또는 일반적인 Haskell 도구를 통해 Ormolu를 받는다면 따로 할 일은 없습니다. 여러분이 받는 릴리스는 제가 만드는 릴리스입니다.
저는 Ormolu를 유지 관리하는 일에 계속 개인적으로 전념하고 있습니다. 지난 6년 정도 다른 일들이 제 정신적 여유를 상당 부분 차지했지만, 제가 지금까지 공개한 실용적인 Haskell 패키지 중 단 하나도 버린 적은 없습니다. 저는 그 패키지들에 대해 일종의 책임을 진다고 생각합니다. 생각해 보니 Megaparsec은 이제 11년 되었습니다. 이제는 패키지계의 할아버지네요! 어떤 패키지는 다른 것보다 유지 관리하는 재미가 더 있지만, 오픈 소스 소프트웨어 개발에 대한 제 생각은 언제나 단순히 과정을 즐기는 것보다 가치와 신뢰성을 제공하는 데 있었습니다.
이제부터 이곳에 다시 글을 올릴 생각입니다. Bazel과 지금 진행 중인 관련 오픈 소스 작업에 대해서는 분명히 글을 쓸 것입니다. Haskell 쪽에서는 제 패키지 대부분의 상태에 만족하고 있으며, 당분간 새 패키지를 만들지는 않을 듯합니다.
이 웹사이트의 코드를 작업하면서, 제 오래된 프로젝트 중 하나인 MMark가 사실 나쁘지 않다는 점을 발견했습니다. 이 정적 웹사이트는 여전히 MMark로 구동되며, 제 필요에 맞게 markdown을 조정하려고 작성한 맞춤 확장이 꽤 많습니다. 이를 사용하다 보면, 좋은 아이디어를 중심으로 만들어졌다는 느낌이 듭니다. 다만 다른 프로젝트들과 달리, 2018년 무렵의 초기 개발 열기 이후에는 충분한 관심을 받지 못했습니다. 다른 일들이 끼어들었기 때문입니다. 이제 제 속도에 맞춰 어디까지 발전시킬 수 있을지 궁금합니다. 제 계획은 CommonMark와 일치하는 인용 구문으로 전환하고, MMark 자체의 특성은 보존하면서 CommonMark에 얼마나 가까이 갈 수 있을지 전반적으로 살펴보는 것입니다. MMark의 특성이란 모호한 입력을 추측으로 처리하지 않고 오류로 처리하는 엄격한 처리기라는 점입니다. 여기서의 목표는 이미 markdown에 익숙한 사람들에게 MMark를 조금 덜 낯설게 만드는 것입니다.
지금은 이것이 제가 공유하고 싶었던 전부입니다. 여름을 즐기시고, Happy Hacking!