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

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

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

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

Q&A

解決済

1回答

1742閲覧

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

qoopty

総合スコア15

Haskell

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

0グッド

0クリップ

投稿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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

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

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使えないんだ..
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問