Idris2/tests/idris2/interface005/Deps.idr

35 lines
760 B
Idris
Raw Normal View History

data Fin : Nat -> Type where
FZ : Fin (S k)
FS : Fin k -> Fin (S k)
interface Finite t where
card : Nat
to : t -> Fin card
from : Fin card -> t
toFrom : (k : Fin card) -> to (from k) = k
fromTo : (x : t) -> from (to x) = x
-- Checking dependent methods work, and that having names from the
-- methods shadowed in the interface head doesn't cause any issues
implementation Finite (Fin k) where
card = ?ncard
to = ?lala
from = ?lula
toFrom = ?foo
fromTo = ?bar
implementation Finite (Fin n) where
card = ?ncard1
to = ?lala1
from = ?lula1
toFrom = ?foo1
fromTo = ?bar1
implementation Finite (Fin t) where
card = ?ncard2
to = ?lala2
from = ?lula2
toFrom = ?foo2
fromTo = ?bar2