packages feed

Agda-2.3.2.2: test/succeed/UncurryMeta.agda

-- It would be nice if this worked. The constraint we can't solve is
--   P x y = ? (x, y)
-- Solution: extend the notion of Miller patterns to include record
-- constructions.
--
-- Andreas, 2012-02-27 works now! (see issues 376 and 456)
module UncurryMeta where

data Unit : Set where
  unit : Unit

record R : Set where
  field
    x : Unit
    y : Unit

_,_ : Unit -> Unit -> R
x , y = record {x = x; y = y}

data P : Unit -> Unit -> Set where
  mkP : forall x y -> P x y

data D : (R -> Set) -> Set1 where
  d : {F : R -> Set} -> (forall x y -> F (x , y)) -> D F

unD : {F : R -> Set} -> D F -> Unit
unD (d _) = unit

test : Unit
test = unD (d mkP)