%default partial

data Foo : Type -> Type where
     IsNat : Foo Nat
     IsBool : Foo Bool

okay : a -> Foo a -> Bool
okay Z IsNat = False
okay True IsBool = True

bad : a -> Foo a -> Bool
bad Z IsNat = False
bad True IsBool = True
bad (Just 0) _ = False
