code: function proceduresPerformer (allProcedures) {
    function next (index, inputArgs) {
      if (index === allProcedures.length) return inputArgs
      else {
        const procedure = allProcedures[index]
        const commence = (...nextInputArgs) => next(index + 1, nextInputArgs)
        return procedure(...inputArgs, commence)
      }
    }
    return msg => next(0, [msg])
  }
docs: /* EXAMPLE OF A TYPE IMPLEMENTATION ON TOP OF THE PATTERN NOTION
  DANGER: Types might prove too great a seduction to end up in a dead end concerning programming performance / effectiveness
  function type (composePattern, composeFn) {
  const typeSymbol = Symbol()
  const immutableType = literal => Object.freeze(Object.assign(
  {type: typeSymbol}, literal
  ))
  const routine = composeFn
  ? msg => immutableType(composeFn(msg))
  : msg => immutableType(msg)
  const matcher = match()
  .define(composePattern, routine)
  .unknown(msg => raise('No match found for', JSON.stringify(msg), 'to compose this type', -3))
  const composer = composeMessage => matcher.send(composeMessage)
  composer.type = typeSymbol
  return Object.freeze(composer)
  }