StackでHaskellプロジェクトの新規作成
前提
nixを使っている
例
Projectを作る
$ cdm
ghqのrootに移動mrsekut.icon
$ nix-shell -p stack
globalにstackが入っていないので一時的にstackを使える環境に移動
$ stack new hogehoge
stackでprojectを作る
Project内で
例えばこんなん
code:shell.nix
{
compiler ? "ghc901",
}:
let
pkgs = import <nixpkgs> { };
cabal = pkgs.haskellPackages.cabal-install;
ghc = pkgs.haskell.packages.${compiler}.ghcWithPackages (hpkgs: with hpkgs; [
]);
in pkgs.mkShell {
nativeBuildInputs = with pkgs; [
cabal
ghc
stack
hlint
];
}
VSCode上でNix-Env: select environmentでnix.shellを選択
nix-direnvの設定をする
$ echo "use nix" >> .envrc
$ direnv allow
code:.gitignore
.direnv
/direnv
$ stack build
以下は必要ならばやる
上の手順で、ghcのversionは9.0.1を使えるようになるが、stackがdefaulltではそれに対応しいない
上の手順でstack projectを作成すると、stack.yamlは以下のようになっていた
code:stack.yaml
resolver:
packages:
- .
だから、この状態で{-# LANGUAGE LinearTypes #-}などを書くと、
VSCode上でも赤線が表示されるし、
$ stack ghciしても、↑の部分がエラーになった
stack.yamlを以下のように書き換えたらいけた
code:stack.yaml
resolver: nightly-2021-10-07
packages:
- .