Ambiguous constructors [Re: [Agda] import Data.Maybe.Core X import
Data.Maybe]
Andreas Abel
andreas.abel at ifi.lmu.de
Tue Jul 2 00:29:57 CEST 2013
Hi Carlos,
this is indeed puzzling, but it is not a bug.
Module Data.Maybe defines constructor 4 times: in data types Maybe, Eq,
Any, and All, so we have 4 constructors
Maybe.just
Eq.just
Any.just
All.just
If you import (just) from Data.Maybe you get an ambiguous constructor,
which agda cannot resolve, since your use gives not enough hints. While
Eq.just can be ruled out, the other three constructors are possible
resolves of ambiguous constructor just.
To see what goes wrong, replace the definition line by
invJust refl = ?
The file then type-checks, but the type (just n ≡ just m) is yellow,
which indicates unresolved meta-variables.
With unresolved constructors, Agda then cannot unify just n == just m
and gives the error you see.
A solution is to manually disambiguate:
open import Data.Maybe using (Maybe; just)
open import Relation.Binary.Core using (refl; _≡_)
invJust : ∀ {A : Set} {n m : A} → (Maybe.just n ≡ just m) → n ≡ m
invJust {A} {n} {.n} refl = refl
Cheers,
Andreas
On 01.07.13 9:30 PM, Carlos Camarao wrote:
> Hi. Is the following ok, or a bug?
>
> Compiling M.agda below with "import Data.Maybe.Core using (just)" is ok
> (no error is detected), but
> compiling with "import Data.Maybe using (just)" causes an error.
>
> The error is: "Failed to infer the value of dotted pattern
> when checking that the pattern .n has type A"
>
> I am using agda version 2.3.0.1, on Ubuntu 12.04 LTS.
>
> Carlos
>
> =============
> module M where
>
> open import Data.Maybe.Core using (just) -- line 1
> -- open import Data.Maybe using (just) -- error
> (commenting line 1)
> open import Relation.Binary.Core using (refl; _≡_)
>
> invJust : ∀ {A : Set} {n : A} {m : A} → (just n ≡ just m) → n ≡ m
> invJust {A} {n} {.n} refl = refl
>
> =============
>
>
> _______________________________________________
> Agda mailing list
> Agda at lists.chalmers.se
> https://lists.chalmers.se/mailman/listinfo/agda
>
--
Andreas Abel <>< Du bist der geliebte Mensch.
Theoretical Computer Science, University of Munich
Oettingenstr. 67, D-80538 Munich, GERMANY
andreas.abel at ifi.lmu.de
http://www2.tcs.ifi.lmu.de/~abel/
More information about the Agda
mailing list