text: type identity('a) = Identity('a);
  
  let lazy_return = Lazy.from_fun(a => Identity(a));
  let ap = (Identity(f), a) => Identity(f(a));
  
  include Monad.MakeBasic({
    type t('a) = identity('a);
    let bind = (Identity(a), f) => f(a)
    let return = a => Identity(a);
    let fmap = `DefineWithBind;
  });
  
  