pub fn bind<TCon, TIn, TOut, TArg, F, TResult>(x: &TArg, f: F) -> TResultwhere TCon: Monad + WithTypeArg<TIn> + WithTypeArg<TOut> + ?Sized, TArg: TypeApp<TCon, TIn> + ?Sized, F: Fn(&TIn) -> TResult, TResult: TypeApp<TCon, TOut>,