[Agda] Defining a module by pattern matching
Dr. ERDI Gergo
gergo at erdi.hu
Wed May 15 22:06:13 CEST 2013
On Wed, 15 May 2013, Guillaume Brunerie wrote:
> This looks like a good idea but I don’t see how to make it work with
> pattern matching on the identity type instead.
> The issue is that the identity type is an inductive family, so when
> pattern matching against it it will change one of the endpoints (which
> is another module argument) so Agda does not like it.
Is your equality type a valid EQUALITY built-in? Because I was able to get
this working via 'rewrite', which requires _≡_ (or in your case, _==_) to
be marked as the EQUALITY:
module Guillaume where
open import Relation.Binary.PropositionalEquality
module FunctionArguments where
same-same : {A : Set} {x y : A} {P : A → Set} → x ≡ y → P x → P y
same-same refl Px = Px
module ModuleArguments {A : Set} {x y : A} {eq : x ≡ y} where
same-same : {P : A → Set} → P x → P y
same-same Px rewrite eq = Px
--
.--= ULLA! =-----------------.
\ http://gergo.erdi.hu \
`---= gergo at erdi.hu =-------'
2B or not 2B, that is 0xff
More information about the Agda
mailing list