Any reason to use `first`?

How about the following?

    current = segment
    iterator = ->
      result = current
      current = current.previous
      return result