code: function mreduceMap(m, f, xs) {
    if(!isMonoid(m)) {
      throw new TypeError(
        'mreduceMap: Monoid required for first argument'
      )
    }
  
    if(!isFunction(f)) {
      throw new TypeError(
        'mreduceMap: Function required for second argument'
      )
    }
  
    if(!isFoldable(xs)) {
      throw new TypeError(
        'mreduceMap: Foldable required for third argument'
      )
    }
  
    return mconcatMap(m, f, xs).valueOf()
  }
docs: mreduceMap :: Monoid M => M -> (b -> a) -> ( [ b ] | List b ) -> a