uni-3 log

    Search by

    Haskell勉強メモ2 -stackで開発用環境構築-

    stackというツールでhaskellのプロジェクト管理をしてみる

    ローカル単位で管理するのが一般的らしい。使い方を調べるのが結構大変だったので。メモを残しておく

    環境

    • ubuntu: 17.10

    project作成

    stack new test-proj
    
    # ...projectが作成される
    
    cd test-proj

    作成後のプロジェクトの中身はこんな感じ

    tree
    .
    ├── app
    │   └── Main.hs
    ├── ChangeLog.md
    ├── LICENSE
    ├── test-prod.cabal
    ├── package.yaml
    ├── README.md
    ├── Setup.hs
    ├── src
    │   └── Lib.hs
    ├── stack.yaml
    └── test
        └── Spec.hs
    • test
    hjq.cabal

    に設定

    packageの追加

    package.yamlで管理する

    ...
    dependencies:
    - base >= 4.7 && < 5
    ...

    の下に追加していく

    実行

    runで実行

    exeファイルをbuildしないで実行する ./app/Main.hsが実行される

    stack run
    execで実行

    exeファイルをbuildして実行する

    stack installでexeファイルを作ってから、 stack exec test-proj-exeなどとして実行する

     stack install
    Copying from ...
    
    Copied executables to ~/.local/bin:
    - test-proj-exe
    stack exec test-proj-exe
    someFunc

    stack newで作成した状態だとsomeFuncがprintされる

    exeの名前はpackage.yaml内の

    executables:
      test-proj-exe:

    にある、変更すると変えられるっぽい

    開発用コマンド

    watch的な、ファイルを監視して、変更されるとリビルドしてくれる

    stack test --fast --file-watch --no-run-tests

    haskell-ide-engine install

    lintや補完をしてくれる これとエディタを組み合わせて、開発環境を構築する

    (vscodeを使っているので、vscodeのextension、Haskell Language Serverをインストールしている)

    git clone https://github.com/haskell/haskell-ide-engine --recursive
    cd haskell-ide-engine

    ghcのバージョンに依ってinstallするバージョンを変える必要がある

    stack ghc -- --version
    ...
    The Glorious Glasgow Haskell Compilation System, version 8.6.3
    stack ./install.hs hie-8.6.3

    vscodeを使ってみたが、 hoogleがない、みたいなwarningがでたので hoogleを入れてみる。どうやら関数の補完とかするときに使うデータベース?みたいなものらしい

    stack hoogle --setup
    # installが始まる 数分かかる

    エラーがでた、以下に従って、extra-depsを追加してみる

      * Recommended action: try adding the following to your extra-deps
        in ~/.stack/global-project/stack.yaml:
    
    haskell-src-exts-1.21.0@sha256:02421cacaa48c055551b8e5796efc543301b7ea9527a38e1385403d2b85512fb

    ~/.stack/global-project/stack.yaml

    extra-deps:
      - haskell-src-exts-1.21.0@sha256:02421cacaa48c055551b8e5796efc543301b7ea9527a38e1385403d2b85512fb
    stack hoogle --setup
    # グローバルデータベースの作成
    stack exec -- hoogle generate

    一応エラーはでなくなった。

    参考

    2021, Built with Gatsby. This site uses Google Analytics.