하스켈 개발 환경 잡기
2019-12-19, Thu
2022년 12월 기준 밑의 내용은 전부 outdated 되었다. HIE와 ghcide가 합쳐진 haskell language server가 완전히 자리를 잡았고 formatter들과 hlint같은 툴은 HLS에 플러그인으로 포함된 상태로 ghcup을 사용해 바이너리로 다운받을 수 있다.
맨 처음에는 그냥 맛보기로 brew로 GHC 깔아서 쓰다가 타입 보는 거랑 포매팅이 힘들어서 다른 툴들을 쓰기로 했다.
설치 환경은 macOS 10.15.4이지만 다른 OS에서도 비슷하게 진행 가능하다.
하스켈 개발 환경으로 찾으면 제일 위에 나오고 또 좋다고 추천 많이 받는 HIE는 내 맥에서 설치가 잘 안 되는 것 같아(i5 2C4T 4GB 램인데 사양이 부족해서 그런지 아무튼 설치가 안 된다. 계속 뻑남..) 대안들을 찾아봤다. 한 번에 안되면 세부 기능별로 하나씩 깔아야지 뭐.
에디터는 visual studio code, 포매터는 brittany, 기타 ide기능은 ghcide를 쓸 것이다.
참고로 레딧에 ghcide랑 hie의 차이점을 정리해놓은 글이 있다. 또 ghcide와 hie를 합치는 작업 이 진행중인데 아직 초기 단계다.
일단 stack을 깐다. Homebrew에 haskell-stack
으로 formula가 있어서 그거로 깔았다. 린터는 hlint를 쓰는데 바이너리 릴리즈가 있어서 역시 brew로 설치 가능하다.
brew install haskell-stack hlint
다른 패키지를 설치하기에 앞서 혹시 이전에 스택으로 설치한 것을 초기화 하려면 ~/.stack
폴더를 지우면 된다.
Stack 설정을 하고 싶다면 레퍼런스를 보고 추가해 주자.
하고 나면 ~/.stack/config.yaml
내용이 작성되어 있다. 내 config.yaml
를 첨부했다.
templates:
params: null
jobs: 2
램이 부족한 느낌이 들어 stack이 동시에 작업하는 수를 줄였다.
추천하지는 않지만 혹시 homebrew에 있는 GHC를 쓰고 싶다면 아래대로 하면 된다.
stack config set system-ghc --global true
이제 ghcide를 설치하자.
git clone --depth 1 https://github.com/digital-asset/ghcide
cd ghcide
stack --resolver lts init --force --omit-packages
stack build --copy-compiler-tool
왜 stack install
대신 stack build --copy-compiler-tool
을 쓰는지는 An opinionated guide to Haskell in 2018에 나와 있다.
혹시 이런 에러가 발생하면 하라는 대로 extra-deps에 추가해주면 된다.
엄청 오래 걸리니까 기다리자. 패키지 리스트 다운받는 것도 오래 걸리고 컴파일도 오래 걸린다. 설치가 끝났으면 clone했던 ghcide 폴더를 지워도 된다.
Brittany는 stackage에 있기 때문에 간단하게 설치할 수 있다.
stack build brittany --copy-compiler-tool
이제 에디터에서 사용할 익스텐션들을 설치하자. 우선 haskell-linter-Cody Hoover, brittany-MaxGabriel, ghcide-Digital Asset Holdings LLC를 설치해주면 된다.
우리는 패키지들을 stack을 통해 설치했으므로 그에 맞춰 설정이 필요하다. Brittany의 경우 Stack Enable
에 체크해주면 되고 ghcide는 Arguments
를 exec ghcide -- --lsp
로, Executable path
를 stack
으로 써주면 된다.
Ghcide의 경우 앞의 방법이 공식적인 해결 방법은 아닌데, 이 이슈에서 track할 수 있다.
전부 설치하고 나면
이런 식으로 작동하는 모습을 볼 수 있다.
이렇게 잡은 환경에서 GHC에 -Wall
등의 파라미터를 넘기려면 stack ghc -Wall source.hs
가 아니라 stack ghc -- -Wall source.hs
처럼 해야 한다.
2020.04.25 설치 과정 수정 및 글 통합