data A : Type where The : Type -> AU : A -> TypeU (The x) = xworks : (a : A) -> (H : U a) -> (let q = H in Nat)works a h = 0fails : (a : A) -> (H : U a) -> (let q : U a = H in Nat)fails a h = 0dolet : Maybe Int -> Maybe Int -> Maybe Intdolet x y = do let Just x' : Maybe Int = x | Nothing => Nothing y' <- y pure (x' + y')dolet2 : Maybe Int -> Maybe Int -> Maybe Intdolet2 x y = do let Just x' : Maybe String = x | Nothing => Nothing y' <- y pure (x' + y')
data A : Type where
The : Type -> A
U : A -> Type
U (The x) = x
works : (a : A) -> (H : U a) -> (let q = H in Nat)
works a h = 0
fails : (a : A) -> (H : U a) -> (let q : U a = H in Nat)
fails a h = 0
dolet : Maybe Int -> Maybe Int -> Maybe Int
dolet x y
= do let Just x' : Maybe Int = x
| Nothing => Nothing
y' <- y
pure (x' + y')
dolet2 : Maybe Int -> Maybe Int -> Maybe Int
dolet2 x y
= do let Just x' : Maybe String = x
| Nothing => Nothing
y' <- y
pure (x' + y')