code: function extend(fn, m) {
    if(!isFunction(fn)) {
      throw new TypeError('extend: Function required for first argument')
    }
    if(!isExtend(m)) {
      throw new TypeError('extend: Extend required for second argument')
    }
  
    return (m[fl.extend] || m.extend).call(m, fn)
  }
docs: extend : Extend w => (w a -> b) -> w a -> w b