Haskell Language
스택
수색…
스택 설치
맥 OS X
자작 나무 사용하기 :
brew install haskell-stack
간단한 프로젝트 만들기
helloworld 라는 프로젝트를 만들려면 :
stack new helloworld simple
이렇게하면 스택 프로젝트에 필요한 파일이있는 helloworld
라는 디렉토리가 생성됩니다.
구조
파일 구조
간단한 프로젝트에는 다음 파일이 포함되어 있습니다.
➜ helloworld ls
LICENSE Setup.hs helloworld.cabal src stack.yaml
폴더 src
에는 Main.hs
라는 파일이 Main.hs
. 이것은 helloworld
프로젝트의 "출발점"입니다. 기본적으로 Main.hs
에는 간단한 "Hello, World!" 프로그램.
Main.hs
module Main where
main :: IO ()
main = do
putStrLn "hello world"
프로그램 실행하기
helloworld
디렉토리에 있는지 확인하고 다음을 실행하십시오.
stack build # Compile the program
stack exec helloworld # Run the program
# prints "hello world"
스택 패키지 및 LTS (리졸버) 버전 변경
Stackage 는 Haskell 패키지 저장소입니다. 이 패키지를 스택 프로젝트에 추가 할 수 있습니다.
프로젝트에 렌즈 추가하기.
스택 프로젝트에는 stack.yaml
이라는 파일이 stack.yaml
. stack.yaml
에는 다음과 같은 세그먼트가 있습니다.
resolver: lts-6.8
Stackage는 lts
모든 개정에 대한 패키지 목록을 보관합니다. 우리의 경우 lts-6.8
대한 패키지 목록을 원합니다.이 패키지를 찾으려면 다음을 방문하십시오.
https://www.stackage.org/lts-6.8 # if a different version is used, change 6.8 to the correct resolver number.
패키지를 살펴보면 Lens-4.13이 있습니다.
이제 helloworld.cabal
섹션을 수정하여 언어 패키지를 추가 할 수 있습니다.
build-depends: base >= 4.7 && < 5
에:
build-depends: base >= 4.7 && 5,
lens == 4.13
분명히 우리가 새로운 LTS를 바꾸고 싶다면 (예를 들어 풀어 놓은 후에), 우리는 단지 resolver number를 바꾼다. 예를 들면 :
resolver: lts-6.9
다음 stack build
스택에서는 LTS 6.9 버전을 사용하므로 일부 새로운 종속성을 다운로드합니다.
스택 프로젝트 빌드 및 실행
이 예제에서 우리 프로젝트 이름은 stack new helloworld simple
하여 생성 된 "helloworld"입니다.
먼저 stack build
프로젝트를 빌드해야합니다.
stack exec helloworld-exe
스택 설치
명령을 실행하여
stack install
스택이 실행 파일을 폴더에 복사합니다.
/Users/<yourusername>/.local/bin/
스택으로 프로파일 링
stack
통해 프로젝트의 프로파일 링을 구성하십시오. 먼저 --profile
플래그를 사용하여 프로젝트를 빌드하십시오.
stack build --profile
GHC 플래그가 작동하려면 ( -prof
와 같이) 카발 파일에 플래그가 필요하지 않습니다. stack
은 프로젝트의 라이브러리와 실행 파일 모두에 대한 프로파일 링을 자동으로 켭니다. 다음 번에 실행 파일이 프로젝트에서 실행되면 일반적인 +RTS
플래그를 사용할 수 있습니다.
stack exec -- my-bin +RTS -p
종속성보기
프로젝트가 직접적으로 의존하는 패키지를 찾으려면 다음 명령을 사용하면됩니다.
stack list-dependencies
이 방법을 사용하면 스택에 의해 실제로 내려진 종속성 버전을 확인할 수 있습니다.
하스켈 프로젝트는 종종 많은 라이브러리를 간접적으로 사용하고 있으며 때로 이러한 외부 종속성으로 인해 추적해야하는 문제가 발생합니다. 식별하려는 불량 외부 종속성을 발견하면 전체 종속성 그래프를 살펴보고 궁극적으로 원하지 않는 패키지를 가져 오는 종속성을 식별 할 수 있습니다.
stack dot --external | grep template-haskell
stack dot
는 검색 할 수있는 텍스트 형식의 종속성 그래프를 인쇄합니다. 다음과 같이 볼 수도 있습니다.
stack dot --external | dot -Tpng -o my-project.png
원하는 경우 종속성 그래프의 깊이를 설정할 수도 있습니다.
stack dot --external --depth 3 | dot -Tpng -o my-project.png