tech_machii
@tech_machii has joined the channel
Resolving dependencies... cabal.exe: Could not resolve dependencies: [__0] trying: generic-storable-0.1.0.0 (user goal) [__1] next goal: base (dependency of generic-storable) [__1] rejecting: base-4.12.0.0/installed-4.1... (conflict: generic-storable => base==4.5.*) [__1] rejecting: base-4.12.0.0, base-4.11.1.0, base-4.11.0.0, base-4.10.1.0, base-4.10.0.0, base-4.9.1.0, base-4.9.0.0, base-4.8.2.0, base-4.8.1.0, base-4.8.0.0, base-4.7.0.2, base-4.7.0.1, base-4.7.0.0, base-4.6.0.1, base-4.6.0.0, base-4.5.1.0, base-4.5.0.0, base-4.4.1.0, base-4.4.0.0, base-4.3.1.0, base-4.3.0.0, base-4.2.0.2, base-4.2.0.1, base-4.2.0.0, base-4.1.0.0, base-4.0.0.0, base-3.0.3.2, base-3.0.3.1 (constraint from non-upgradeable package requires installed instance) [__1] fail (backjumping, conflict set: base, generic-storable) After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: base, generic-storable
cabal install generic-storable` で、でました。 無論 allow-newer
で解決したんですが、、、SemVarが絶対の世界(っていうと問題ありそうだけど、、、)だと特になんの意識もしないで入れられる筈ですよね?>= その時のバージョン && < 次のメジャーバージョン
と指定すればいい) し, constraints とはそのライブラリの動作保証の範囲を表します.それに違反するような constraints を使うということは少なくともライブラリ作成者は意図していないはずです(そもそも constraints はその意図を表すものなので).そのような場合に強い需要がなく実装コストの高い柔軟な自動解決が手段が必要なのかallow-newer
は 単なる緊急回避でしかなく 極端にいえば絶対悪であることbase == 3.*
の依存だった場合は保障の対象外となることrely-on-version
は allow-newer
に上限を付けるもので ライブラリ作者が適切にバージョニングを行っていると仮定した場合安全になる ということ。 constraint
フラグは あくまでも手動の解決であって、 制約自体は機械的に与えられたものではないことGHC is the de facto standard compilerとあるようにGHCが事実上の標準だとするとそれの依存である baseパッケージがバージョニングを適切に行なってないならあまり効果はなさそうですね。
GHCが事実上の標準だとするとそれの依存である baseパッケージがバージョニングを適切に行なってないならあまり効果はなさそうですね。
base == 4.*
というように指定する慣習があります。そのため、本件のような時に大抵は問題が起きないようになっています。あたかも Major.Minor.Patch.Patch であるかのように扱われているってことですね。ただ、本来なら base == 4.5.*
と指定するのが厳密です。deriving via Sum Int instance Monoid Counter
のように書くRebindableSyntax
で (<<)
の定義を上書きし忘れてハマった」と言っているのを見かけた記憶があるんですが、すごく良さそうな解決法がありました。 https://github.com/sleexyz/rebindablebrittany --write-mode inplace
で呼べばよかったのではないかと。 :thinking_face:map (n+) [1..10]
にするとこのエラーが吐かれない