프로 하스켈러 1일차 | GHCup

김대현
HappyProgrammer
Published in
5 min readMay 10, 2022

헛헛, 평소에 참 운이 좋은 편이라 감사하게 생각하고 있습니다. 또 이런 행운이 이어졌습니다. 함수형 프로그래밍 언어를 즐겁게 공부하는 것만으로도 감사한데, 이제 또 월급을 받는 하스켈 개발자가 되었습니다. 여기서 “프로”의 기준은, 주된 소득 수단이냐 아니냐의 의미이며, 실력이 좋고 나쁘고의 의미는 아님을 언급하고 은근슬쩍 넘어가 보겠습니다. 머지않아 실력도 프로스럽게 되었으면 좋겠습니다.

그동안 빼어난 업무환경에서 일할 수 있었던, 그리고, 월급 받는 함수형 스칼라 개발자로 일할 수 있었던, 라인플러스 MONAD 팀에서의 퇴사절차를 지난 주에 마무리하고, 이번 주부터는, 작은 스타트업에서 하스켈 백엔드 개발자로 일하기 시작했습니다.

LINE+에서 근무하는 동안 있었던 흥미로운 이야깃거리도 참 많은데, 그 얘기는 아쉽지만 좀 나중으로 미루기로 하고, 하스켈 개발 이야기를 틈틈이 적으면 좋을 것 같습니다. 아주 가볍게 사소한 정보라도 솔직하게 적으면, 읽으시는 분들도 남의 일기 훔쳐보는 재미가 있지 않을까 기대해봅니다. 매일 적겠다는 뜻은 아니고, 틈틈이 작은 이야기를 가볍게 마구 적어보려 합니다.

오늘 적을 간단한 정보는, 하스켈 툴셋 설치에 대한 이야기입니다. 하스켈 컴파일러와, 의존성 관리 도구, 그리고 IDE 등의 환경을 위한 언어 서버를 설치하는 툴을 소개해 보겠습니다.

하스켈 언어로 개발을 하려면, 우선 컴파일러가 필요할 텐데요, 하스켈 언어의 산업 표준은 GHC 컴파일러이고, 현재 8.10.x 버전이 많이 쓰이고, 최신 버전은 9.x 버전인 것 같습니다. 어쨌건 대부분의 언어가 그렇듯, 표준 라이브러리나 컴파일러도 여러 버전이 있고, 프로젝트 별로 특정 버전을 콕 집어서 사용해야 할 텐데요, 그때 오늘 소개할 GHCup이라는 툴을 사용하면 편리합니다.

https://www.haskell.org/ghcup/

로컬 머신에, 이 GHCup이라는 툴을 설치하고 실행하면, ghc (컴파일러), stack (빌드 툴 + 의존성 관리), HLS (랭귀지 서버, vscode 등의 편집기에서 개발 통합 환경을 제공하는 활약)을 버전별로 설치하고 골라서 사용할 수 있습니다.

GHCup 공홈에 있는 설치 정보로 설치해도 되고, 맥의 경우 홈브루(homebrew)로 설치해도 됩니다. 얼마 전까지만 해도, m1 맥북에서 특정 버전의 stack 툴이 잘 동작하지 않는 부분이 있었다는데, 저는 모든 툴이 아주 깔끔하게 잘 설치되고, vscode 하스켈 확장까지도 잘 설치되고 실행되었습니다. 친절한 텍스트 인터페이스도 있어서 아주 친근합니다.

$ ghcup tui

VS Code용 하스켈 확장 프로그램도 잘 준비돼 있었습니다.

하스켈 확장프로그램이 22만 다운로드라니…

확장 프로그램이 GHCup도 잘 인식해서 다뤄주기 때문에, 프로젝트를 터미널에서 stack으로 빌드할 때랑, VS Code에서 편집할 때의 환경이 같아서 좋았습니다. (불과 몇 달 전 하스켈 코드 연습할 때만 하더라도, VS Code 확장 프로그램이 별도의 하스켈 환경을 설치해서 시간도 오래 걸리고, 버전 차이도 있었던 불편함이 있었던 것 같은데, 그새 더 좋아졌습니다.)

유용해보이는 in-code 평가 기능

한 가지 새로 배운 유용한 기능도 소개하고 싶습니다. 위 VS Code 캡처 이미지 56번째 줄에, 주석으로 코드 한 줄이 있고, 그 위에 Refresh…라는 버튼(?)이 보이는데요, 이 부분을 처음 보았는데, 아주 유용하다 생각했습니다. 코드 중간에 주석인데, 주석 안에 >>> 이렇게 표시하고 코드를 작성해 두면, 이 Refresh(또는 Evaluate) 버튼이 붙습니다. 이 버튼을 누르면, 마치 REPL인 듯, 해당 코드가 평가되고, 그 결과 값이 아래에 주석으로 붙습니다. REPL처럼 활용할 수 있는 데다, 소스 코드에 (주석으로) 그 내용이 바로 남아 있어서, 코드를 읽을 때도 도움이 될 좋은 방식 같습니다.

이상, 오늘은 짧게 하스켈 툴셋 설치하는 툴인 GHCup을 간단히 소개했고, VS Code확장에서의 코드 평가 기능도 자랑해 보았습니다. 그럼 전, 또 2일차 업무를 시작하러 가보겠습니다.

P.S. 그리고 이 훌륭한 환경의 스타트업에서, “하스켈 백엔드 개발자는 물론" 타입스크립트 기반 리액트 네이티브로 iOS앱을 개발할 프런트엔드 개발자도 모시고 있습니다. 선지원 후고민 고고~

감사합니다.

--

--

김대현
HappyProgrammer

시니어 백엔드 개발자. 함수형 프로그래밍을 선망하며 클로저, 스칼라, 하스켈로 도전하며 만족 중. 마이너리티 언어만 쫓아다니면서도 다행히 잘 먹고 산다. 최근엔 러스트로 프로그래머 인생 확장.