-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build failure with hashable-1.4.0.0
#126
Comments
This issue is blocking support for GHC 9.0.2, as only |
Option (2) in #126 (comment) is further complicated by the fact that it's unclear if In light of this, I think it would be best to go with option (1). A quick search reveals that the libraries that would be most impacted by this change are |
Because `hashable-1.4.0.0` adds an `Eq` superclass to `Hashable`, several `Hashable` instances in `parameterized-utils` now must add additional constraints to satisfy the corresponding `Eq` instances. For instance, several `Eq` instances have `TestEquality` constraints, so the `Hashable` instances must have corresponding `TestEquality` constraints as well. Fixes #126.
This was prompted by GaloisInc/parameterized-utils#126, but the changes needed on `what4`'s end can be applied independently.
This was prompted by GaloisInc/parameterized-utils#126, but the changes needed on `crucible`'s end can be applied independently.
I agree, let's not bake in |
This was prompted by GaloisInc/parameterized-utils#126, but the changes needed on `crucible`'s end can be applied independently.
This was prompted by GaloisInc/parameterized-utils#126, but the changes needed on `what4`'s end can be applied independently.
This was prompted by GaloisInc/parameterized-utils#126, but the changes needed on `crucible`'s end can be applied independently.
Because `hashable-1.4.0.0` adds an `Eq` superclass to `Hashable`, several `Hashable` instances in `parameterized-utils` now must add additional constraints to satisfy the corresponding `Eq` instances. For instance, several `Eq` instances have `TestEquality` constraints, so the `Hashable` instances must have corresponding `TestEquality` constraints as well. Fixes #126.
Trying to build
parameterized-utils
withhashable-1.4.0.0
fails thusly:This is because
hashable-1.4.0.0
makesEq
a superclass ofHashable
. BecauseTypeAp
'sEq
instance has aTestEquality
constraint, theHashable
instance forTypeAp
now also requiresTestEquality
. This isn't a problem currently, asparameterized-utils
constraintshashable < 1.4
in its.cabal
file, but it will be an issue eventually.Two possible fixes:
Add
TestEquality
constraints to all instances that need them. Something like this:In the spirit of
hashable-1.4.0.0
, we could makeTestEquality
a superclass ofHashableF
. This comes with its own set of challenges, however, as there are data types that haveHashableF
instances but notTestEquality
instances. For instance, naïvely adding aTestEquality
instance toHashableF
will result in a different build error inparameterized-utils
:It's not entirely clear to me how you'd even define
TestEquality
forConst
.The text was updated successfully, but these errors were encountered: