I get this type unification problem:
Operator: (∘) CONSTRUCTION.rtf ::
('a::type M N M ⇒ ??'a::type CONSTRUCTION.M CONSTRUCTION.N CONSTRUCTION.M)
⇒ 'a::type M N M ⇒ ??'a::type CONSTRUCTION.N CONSTRUCTION.M
Operand: expr :: 'a::type M N M ⇒ 'b::type M N M
I wonder why ??'a in the Operator type cannot be unified with 'b in the Operand type. Isn't ??'a a schematic type variable that could be unified with 'b?
Given the error message, I suspect that CONSTRUCTION.M
and M
are distinct
By definition, they are equal, and so are
CONSTRUCTION.N = N
Tthe error message is mixing both and type_synonym
is introducing a synonym that is expanded in the error message. So how are you doing the "by definition they are equal"?
Last updated: Dec 21 2024 at 12:33 UTC