You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
My analysis of what goes wrong (can be completely wrong): Certain built-ins store a Value in their struct to represent partial application, but Value isn't generally comparable using the equal operator. More specifically, RecordLit, RecordType and UnionType aren't comparable. And alphaEquivalence then doesn't take into account that (random example) a listHead is not comparable if it embeds a RecordType as typ field, as demonstrated in the initial example:
A minimal example I could come up with was
assert : List/head {} ≡ List/head {}
, which panics dhall-golang:My analysis of what goes wrong (can be completely wrong): Certain built-ins store a
Value
in their struct to represent partial application, butValue
isn't generally comparable using the equal operator. More specifically,RecordLit
,RecordType
andUnionType
aren't comparable. AndalphaEquivalence
then doesn't take into account that (random example) alistHead
is not comparable if it embeds aRecordType
astyp
field, as demonstrated in the initial example:dhall-golang/core/equivalence.go
Lines 17 to 29 in bcdfb60
I think this can be solved by introducing more
case
s:I can come up with a pull request if that sounds like a suitable solution.
The text was updated successfully, but these errors were encountered: