public static ICanbe <O> Map <I, O>(this ICanbe <I> self, Func <I, O> func) => self.Bind(x => Cons(func(x)));
async public static Task <ICanbe <O> > Map <I, O>(this ICanbe <I> self, Func <I, Task <O> > func) => await self.Bind(async x => Cons(await func(x)));