module FuncImpl public export interface Monad m => FooBar m where Foo : {A : Type} -> A -> m A -> Type bar : {A : Type} -> (ma : m A) -> m (DPair A (\ a => Foo a ma)) foobar : {A : Type} -> (ma : m A) -> map DPair.fst (bar ma) = ma