Open nicolabotta opened 8 years ago
Not quite. I'd expect this, because scoped implicits don't work the same way as top level implicits (laregely for historical reasons), and I haven't implemented the ability to fill in scoped implicits this way yet.
Hmmm ... I am afraid I do not get the difference between scoped implicits and top level implicits.
To me it seems that t
is an implicit parameter of finiteAllGood
and that the problem here is just that
> finiteAllGood : FiniteAllGood
is not equivalent to
> finiteAllGood : {t : Nat} -> {n : Nat} ->
> (x : Foo t) -> (y : Bar t x) ->
> Finite (All (Good {t = S t} n) (foos t x y))
in spite of the fact that
> FiniteAllGood = {t : Nat} -> {n : Nat} ->
> (x : Foo t) -> (y : Bar t x) ->
> Finite (All (Good {t = S t} n) (foos t x y))
!
The program
type checks fine. But uncommenting the comment block yields
This seems to be an error given that the types of
finAll
andfiniteAll
,finGood
andfiniteGood
andfinAllGood
andfiniteAllGood
are equal, I believe.