質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Haskell

Haskellは高い機能性をもった関数型プログラミング言語で、他の手続き型プログラミング言語では難しいとされている関数でも容易に行うことができます。強い静的型付け、遅延評価などに対応しています。

Q&A

解決済

StackでatCoderで利用できるライブラリが競合する with Haskell

qoopty
qoopty

総合スコア15

Haskell

Haskellは高い機能性をもった関数型プログラミング言語で、他の手続き型プログラミング言語では難しいとされている関数でも容易に行うことができます。強い静的型付け、遅延評価などに対応しています。

1回答

0グッド

0クリップ

906閲覧

投稿2021/05/14 01:54

前提・実現したいこと

atCoderの環境をそろえたいと思い
Language Test 202001
に書かれているコンパイラ・ライブラリのバージョンをそろえようとしています。

発生している問題・エラーメッセージ

$stack build Error: While constructing the build plan, the following exceptions were encountered: In the dependencies for PM001-0.1.0.0: extra-1.6.21 from stack configuration does not match ==1.7.1 (latest matching version is 1.7.1) lens-4.18.1 from stack configuration does not match ==4.19.1 (latest matching version is 4.19.1) massiv-0.4.5.0 from stack configuration does not match ==0.5.1.0 (latest matching version is 0.5.1.0) repa must match ==3.4.1.4, but the stack configuration has no specified version (latest matching version is 3.4.1.4) unordered-container must match ==0.2.10.0, but the stack configuration has no specified version (no package with that name found, perhaps there is a typo in a package's build-depends or an omission from the stack.yaml packages list?) utility-ht-0.0.14 from stack configuration does not match ==0.0.15 (latest matching version is 0.0.15) needed since PM001 is a build target. Some different approaches to resolving this: * Recommended action: try adding the following to your extra-deps in D:\haskell\atcoder\typical90\stack.yaml: - extra-1.7.1@sha256:a9fd1d35a563820f414014f1659769f52726d2031eff6b4628abfcd86729a325,2756 - lens-4.19.1@sha256:eeb81c5142c7b9b7eb557e097714d02493d22a95975125f83d16c1a6a9ec0c6e,16122 - massiv-0.5.1.0@sha256:12a10a0a186e2daea68eb13d8a8e626112bcb9f2d29c067d8226e6f53379edbd,4893 - repa-3.4.1.4@sha256:5a99bde69fe96a18d70aae23f47c8f719b1134558dca3ee5a7c15423b68a132e,3323 - utility-ht-0.0.15@sha256:940b35a19ce392c4fd86d96fecd0efb3c3b8a598af31fe5aca7e9f3b172e284b,3023

該当のソースコード

stack.yaml

yaml

1resolver: lts-15.5 2compiler: ghc-8.8.3 3

package.yaml

yaml

1 2dependencies: 3- base >= 4.7 && < 5 4- array == 0.5.4.0 5- attoparsec == 0.13.2.3 6- bytestring == 0.10.10.0 7- bytestring == 0.10.10.0 8- containers == 0.6.2.1 9- deepseq == 1.4.4.0 10- extra == 1.7.1 11- fgl == 5.7.0.2 12- hashable == 1.3.0.0 13- heaps == 0.3.6.1 14- integer-logarithms == 1.0.3 15- lens == 4.19.1 16- massiv == 0.5.1.0 17- mono-traversable == 1.0.15.1 18- mtl == 2.2.2 19- mutable-containers == 0.3.4 20- mwc-random == 0.14.0.0 21- parallel == 3.2.2.0 22- parsec == 3.1.14.0 23- primitive == 0.7.0.1 24- psqueues == 0.2.7.2 25- QuickCheck == 2.13.2 26- random == 1.1 27- reflection == 2.1.5 28- repa == 3.4.1.4 29- template-haskell == 2.15.0.0 30- text == 1.2.4.0 31- tf-random == 0.5 32- transformers == 0.5.6.2 33- unboxing-vector == 0.1.1.0 34- unordered-container == 0.2.10.0 35- utility-ht == 0.0.15 36- vector == 0.12.1.2 37- vector-algorithms == 0.8.0.3 38- vector-th-unbox == 0.2.1.7

試したこと

stackHPからghc-8.8.3に対応するresolverは
lts-16.11を確認しコンパイルしたがエラー.
いくつかのライブラリのバージョンが一致しないといわれたが、
とりあえずattoparsec一致バージョンに対応するresolverを確認した.(lts-15.5)

補足情報(FW/ツールのバージョンなど)

windows 10
PS D:\haskell\atcoder\typical90> stack --version
Version 2.7.1, Git revision 8afe0c2932716b0441cf4440d6942c59568b6b19 x86_64 hpack-0.34.4

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

2

ベストアンサー

Stack は resolver を指定することで、コンパイラーのバージョンや主要なライブラリーのバージョンを全部指定するようになっています。

今回のようにコンパイラーやライブラリーのバージョンを全て指定する場合、Stack を利用する利点はあまりありません。Cabal を利用するのがよいでしょう。

cabal

1-- teratail-atcoder.cabal 2cabal-version: 1.12 3 4name: teratail-atcoder 5version: 0.0.0 6build-type: Simple 7 8executable teratail-atcoder 9 main-is: main.hs 10 build-depends: 11 QuickCheck ==2.13.2, 12 array ==0.5.4.0, 13 attoparsec ==0.13.2.3, 14 base >=4.7 && <5, 15 bytestring ==0.10.10.0, 16 containers ==0.6.2.1, 17 deepseq ==1.4.4.0, 18 extra ==1.7.1, 19 fgl ==5.7.0.2, 20 hashable ==1.3.0.0, 21 heaps ==0.3.6.1, 22 integer-logarithms ==1.0.3, 23 lens ==4.19.1, 24 massiv ==0.5.1.0, 25 mono-traversable ==1.0.15.1, 26 mtl ==2.2.2, 27 mutable-containers ==0.3.4, 28 mwc-random ==0.14.0.0, 29 parallel ==3.2.2.0, 30 parsec ==3.1.14.0, 31 primitive ==0.7.0.1, 32 psqueues ==0.2.7.2, 33 random ==1.1, 34 reflection ==2.1.5, 35 repa ==3.4.1.4, 36 template-haskell ==2.15.0.0, 37 text ==1.2.4.0, 38 tf-random ==0.5, 39 transformers ==0.5.6.2, 40 unboxing-vector ==0.1.1.0, 41 unordered-containers ==0.2.10.0, 42 utility-ht ==0.0.15, 43 vector ==0.12.1.2, 44 vector-algorithms ==0.8.0.3, 45 vector-th-unbox ==0.2.1.7 46 default-language: Haskell2010

cabal build all でビルドします。

Stack を使用する場合は stack.yaml に下記を追加します。これは「resolver 外のライブラリーを使用する」という宣言です。

yaml

1# stack.yaml 2 3extra-deps: 4- extra-1.7.1@sha256:a9fd1d35a563820f414014f1659769f52726d2031eff6b4628abfcd86729a325,2756 5- lens-4.19.1@sha256:eeb81c5142c7b9b7eb557e097714d02493d22a95975125f83d16c1a6a9ec0c6e,16122 6- massiv-0.5.1.0@sha256:12a10a0a186e2daea68eb13d8a8e626112bcb9f2d29c067d8226e6f53379edbd,4893 7- repa-3.4.1.4@sha256:5a99bde69fe96a18d70aae23f47c8f719b1134558dca3ee5a7c15423b68a132e,3323 8- utility-ht-0.0.15@sha256:940b35a19ce392c4fd86d96fecd0efb3c3b8a598af31fe5aca7e9f3b172e284b,3023

補足ですが、GHC 8.8.3 は Windows においてアクセス違反のバグがあるので 8.8.4 を使用することをおすすめします。

投稿2021/05/14 14:36

kakkun61

総合スコア285

qoopty, igrep👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

qoopty

2021/05/15 12:29

>今回のようにコンパイラーやライブラリーのバージョンを全て指定する場合、Stack を利用する利点はあまりありません。Cabal を利用するのがよいでしょう。 はい、一応わかっていますが。 今はstack慣れようと思ってるのであえてstackを使ってます。 以下のようにしてコンパイル通りました。 ```yaml #stack.yaml extra-deps: - bytestring-0.10.10.0@sha256:6031d86e4fd6419ad2ea05ecc008188dd64ed6c18f09556c86dd4c80d2a5f626,8961 - extra-1.7.1@sha256:a9fd1d35a563820f414014f1659769f52726d2031eff6b4628abfcd86729a325,2756 - lens-4.19.1@sha256:eeb81c5142c7b9b7eb557e097714d02493d22a95975125f83d16c1a6a9ec0c6e,16122 - massiv-0.5.1.0@sha256:12a10a0a186e2daea68eb13d8a8e626112bcb9f2d29c067d8226e6f53379edbd,4893 - repa-3.4.1.4@sha256:5a99bde69fe96a18d70aae23f47c8f719b1134558dca3ee5a7c15423b68a132e,3323 - text-1.2.4.0@sha256:8c24450feb8e3bbb7ea3e17af24ef57e85db077c4bf53e5bcc345b283d1b1d5b,10081 - utility-ht-0.0.15@sha256:940b35a19ce392c4fd86d96fecd0efb3c3b8a598af31fe5aca7e9f3b172e284b,3023 - Cabal-3.2.1.0@sha256:8743076ec022296f9771d962000c9ca3a0fe02e68c37b992c63e382a675f791d,27482 - time-1.9.3@sha256:8f1b5448722a12a952248b356c9eb366e351226543d9086a2da71270522d5f45,5679 - binary-0.8.8.0@sha256:e9387a7ef2b34c6a23b09664c306e37cc01ae2cb4e4511a1c96ffb14008c24b0,6262 - directory-1.3.6.1@sha256:8878947a9f521c0f2ed02cea7c4b3d90a1c16154e559858f8c2bb81b14ae7c92,2940 - parsec-3.1.14.0@sha256:72d5c57e6e126adaa781ab97b19dc76f68490c0a3d88f14038219994cabe94e1,4356 - process-1.6.11.0@sha256:472c51a8903b55b1b423e7e4050facd1dce5e323fd81e5953f02ca500bb9d58c,2819 drop-packages: - process - time - binary - directory - parsec - text ```
qoopty

2021/05/15 12:30

あらコメントはMarkdown使えないんだ..

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Haskell

Haskellは高い機能性をもった関数型プログラミング言語で、他の手続き型プログラミング言語では難しいとされている関数でも容易に行うことができます。強い静的型付け、遅延評価などに対応しています。