haskell-jp / beginners #22 at 2022-11-11 16:22:42 +0900

こんにちは。
VSCodeでのstackのエラーが出て、解消できず困っております。
何かご教示いただけますと幸いです。
Haskell自体の環境設定は、GHCupを使っています。

環境
Windows 11 WSL2 上の Ubuntu 20.04

バージョン
stack 2.9.1
ghcup 0.1.18.0

再現方法

stack new palindrome-checker

で新規プロジェクト作成

app/Main.hs

で以下のようなエラーがでます。
キャプチャ

ghcide compiled by GHC 9.0 failed to load packages: <command line>: cannot satisfy -package palindrome-checker-0.1.0.0
    (use -v for more information). 
Please ensure that ghcide is compiled with the same GHC installation as the project.cradle

バージョンの不整合が起こっているようでいろいろ調べたのですが、
ghcide がアーカイブになっていたりよくわかりません。

https://github.com/haskell/ghcide

ghcのバージョンについても調べました。
以下の二つのコマンドでGHCのバージョンが異なるようでこれも謎でした。

> ghc -v
Glasgow Haskell Compiler, Version 9.4.3, stage 2 booted by GHC version 9.2.2

> stack ghc -- --version
The Glorious Glasgow Haskell Compilation System, version 9.0.2
ghcup tui でGHC 9.0.2をインストールしてsでデフォルトにセットするとどうなりますか?
ghcupもstackもそれぞれGHCをインストールするんですが、お互いが別々の場所に別々のバージョンをインストールする、というのが根っこの原因です。
私的には ~/.stack/config.yaml には

system-ghc: true

と書いておくのがオススメです
仰るとおり system-ghc: true にした上でGHC 9.0.2をghcupでインストールすれば、確信は持てませんが多分直ると思います。

個人的にはそもそもghcupとstack両方がGHCをインストールする機能を持っていてかち合うことがあるのが根本原因なので、stackごと消してしまいたいところなんですが... :disappointed:
補足: エラーメッセージで「ghcide」と言っている箇所はhaskell-language-server内部で使っているghcideのライブラリーのことのはずですので、「haskell-language-server」と読み替えても差し支えありません。
あるいは、逆にghcupがインストールしたGHCをすべて削除して、stackがインストールしたGHCのみを( stack ghc コマンド経由で)使うようにするのでも直ると思います。
横からすみません。私も同じエラーが出ていたので、`~/.stack/config.yaml` に system-ghc: true を追加して、ghcup でGHC9.0.2 をデフォルトに設定しました。
stack newして Main.hs を開くとエラーは解消されませんでした。
ですが stack build して開き直すとエラー解消しました。謎です。
ありがとうございます!

• ghc のデフォルトバージョンを 9.0.2 に固定
~/.stack/config.yamlsystem-ghc: true を追加
stack build 実行
• VSCode 再起動
で、エラー解消できました!