export const flatMap = (m, f) => {
  const flatMap_ = (m, f) => Monad(m) ? dataType(m).flatMap(m, f) : error.typeError(m, flatMap);
  return partial(flatMap_, m, f);
}