시카고에 사는 소프트웨어 개발자 Alexis King의 소개. 함수형 프로그래밍과 정적 타입, 프로그래밍 언어 연구에 관심이 있으며, 참여한 프로젝트들과 이 블로그를 구성하는 Scribble에 대해 이야기합니다.
제 이름은 Alexis King이고, 저는 정말 많은 소프트웨어를 만듭니다. 현재 시카고에 살고 있습니다.
저는 함수형 프로그래밍, 정적 타입, 그리고 프로그래밍 언어 연구에 관심이 있으며, 가능한 한 많은 시간을 Haskell과 Racket을 쓰는 데 보내려고 합니다. 제가 하는 일들 중 일부는 이 블로그에 글로 남기고, 때때로 Twitter에서 그것들과 다른 것들에 관해 트윗하기도 합니다. 저는 GitHub에서 정말 많은 오픈 소스 프로젝트를 작업하고 있으며, lexi.lambda@gmail.com으로 이메일을 보내실 수 있습니다.
이 목록은 지난 몇 년 동안 제가 작업해 온 멋진 것들 중 일부만을 모은 것입니다. 포괄적이지도, 특별히 과학적으로 엄밀하게 선별된 것도 아닙니다.
2021⁓Scribble 위에 이 블로그를 재구현하여 frog를 대체했습니다.⁓사용자 정의 파서 상태와 파서 룩어헤드를 지원하도록 megaparsack v1.5를 릴리스했습니다.
2020⁓Michael Ballantyne, Matthias Felleisen과 함께 OOPSLA에 “Macros for DSLs”를 게재했습니다.⁓eff의 설계와 RTS에 구분 연속(delimited continuations)을 추가하는 GHC 제안에 관해 ZuriHac 2020에서 “Effects for Less”를 발표했습니다.⁓graphql-engine에서 여러 종류의 버그를 정적으로 배제하기 위한 대규모 리팩터링을 주도했습니다.⁓애로우 표기법을 개선하기 위한 GHC 제안을 올렸습니다.⁓일부 성능 수정과 애로우 표기법 개선 등을 포함해 GHC에 기여를 시작했습니다.
2019⁓Lukas Lazarek, Samanvitha Sundar, Robby Findler, Christos Dimoulas와 함께 POPL에 “Does blame shifting work?” 논문을 게재했습니다.⁓Hasura를 위한 작업을 바탕으로 monad-validate를 릴리스했습니다.⁓Hasura에서 일하기 시작했습니다.
2018⁓Curry On에서 “Hackett: a metaprogrammable Haskell”을 발표했고, 몇 달 뒤 Strange Loop에서도 다시 발표했습니다.⁓노스웨스턴 대학교에서 Christos Dimoulas와 함께 계약 시스템(contract systems) 연구를 시작했습니다.
2017⁓freer-simple 패키지를 릴리스했습니다.⁓RacketCon에서 “Hackett, a Haskell for Racketeers”를 발표했습니다.⁓Racket에 내장된 하스켈 유사 언어인 Hackett 작업을 시작했습니다.
2016⁓Turnstile에서 영감을 받은 아이디어를 탐구하기 위해 타입 시스템을 공부하기 시작했습니다.⁓RacketCon에서 “Languages in an Afternoon”을 발표했습니다.⁓megaparsack과 scripty Racket 라이브러리를 릴리스했습니다.⁓처음으로 직업적으로 하스켈을 쓰기 시작했습니다.
이 블로그는 Racket로 작성된, 보기 드물 정도로 유연한 문서 작성 시스템인 Scribble로 구동됩니다. 대부분의 마크업 언어와 달리, 모든 Scribble 문서는 문서로 평가되는 하나의 프로그램이며, 그 결과는 여러 가지 백엔드 중 하나를 사용해 렌더링할 수 있습니다. Scribble은 그러한 프로그램을 작성하기 위한 TeX와 유사한 표기법을 제공하지만, 본질적으로 비대해진 매크로 전처리기인 TeX과는 달리 Scribble은 완전한 함수형 프로그래밍 언어입니다. 사실 Scribble 문법은 Racket 자체를 위한 대체 표기법일 뿐이어서, Racket에서 사용 가능한 모든 라이브러리와 추상화들을 Scribble 문서에서도 거의 그대로 사용할 수 있습니다.
이 덕분에 Scribble은 산문형 문서를 작성하는 데 놀라울 만큼 강력한 도구가 되었고, 실제로 Racket의 최고 수준의 문서화 시스템 등 여러 것들의 토대가 됩니다. 블로그를 여기에 얹는 것은 다소 과할 수도 있지만, 블로깅을 최대한 수월하게 만들기 위해 제가 원하는 어떤 추상화든 정의할 수 있는 멋진 능력을 제공합니다. 예를 들어, Hackage 패키지에 자주 링크를 거는 제 자신을 발견한 뒤, 저는 한 줄짜리 함수를 정의하기로 했습니다:
(define (hackage-package package-name)
(hyperlink (string-append "https://hackage.haskell.org/package/" package-name) package-name))
이제 저는 @hackage-package{lens}만 쓰면 lens를 얻습니다. 물론 대단히 놀라운 일은 아니지만, 확실히 편리합니다… 그리고 물론 가장 중요한 이점들은 여기서 설명하기엔 너무 정교한 추상화들과 관련되어 있습니다.
이 사이트는 말할 것도 없이 오픈 소스이므로, 모든 구성 요소가 어떻게 맞물리는지 직접 보고 싶다면 GitHub 저장소를 자유롭게 클론해 보세요. 그리고 Scribble을 실제로 사용할 때 어떤 모습인지 간단한 예시에 관심이 있다면, 특히 이 페이지의 소스 코드를 살펴보는 것도 좋습니다.