code: function fold(m) {
    if(isArray(m)) {
      return _array.fold(m)
    }
  
    if(m && isFunction(m.fold)) {
      return m.fold()
    }
  
    throw new TypeError('fold: Non-empty Foldable with at least one Semigroup is required')
  }
docs: fold : Foldable f, Semigroup s => f s -> s