docs: def slash_product(string_or_seq, slash='/', space=' '):
      """Return a list of all possible meanings of a phrase containing slashes
  
      TODO:
          - Code is not in standard Sedgewick recursion form
          - Simplify by removing one of the recursive calls?
          - Simplify by using a list comprehension?
  
      # doctest: +NORMALIZE_WHITESPACE
      >>> slash_product("The challenging/confusing interview didn't end with success/offer")
      ["The challenging interview didn't end with success",
       "The challenging interview didn't end with offer",
       "The confusing interview didn't end with success",
       "The confusing interview didn't end with offer"]
      >>> slash_product('I say goodbye/hello cruel/fun world.')  # doctest: +NORMALIZE_WHITESPACE
      ['I say goodbye cruel world.',
       'I say goodbye fun world.',
       'I say hello cruel world.',
       'I say hello fun world.']
      >>> slash_product('I say goodbye/hello/bonjour cruelness/fun/world')  # doctest: +NORMALIZE_WHITESPACE
      ['I say goodbye cruelness',
       'I say goodbye fun',
       'I say goodbye world',
       'I say hello cruelness',
       'I say hello fun',
       'I say hello world',
       'I say bonjour cruelness',
       'I say bonjour fun',
       'I say bonjour world']
      """
      # Terminating case is a sequence of strings without any slashes
      if not isinstance(string_or_seq, basestring):
          # If it's not a string and has no slashes, we're done
          if not any(slash in s for s in string_or_seq):
              return list(string_or_seq)
          ans = []
          for s in string_or_seq:
              # slash_product of a string will always return a flat list
              ans += slash_product(s)
          return slash_product(ans)
      # Another terminating case is a single string without any slashes
      if slash not in string_or_seq:
          return [string_or_seq]
      # The third case is a string with some slashes in it
      i = string_or_seq.index(slash)
      head, tail = string_or_seq[:i].split(space), string_or_seq[i + 1:].split(space)
      alternatives = head[-1], tail[0]
      head, tail = space.join(head[:-1]), space.join(tail[1:])
      return slash_product([space.join([head, word, tail]).strip(space) for word in alternatives])