New Issue: Implement a new remove method for set that returns the item removed

18649, "bmcdonald3", "Implement a new remove method for set that returns the item removed", "2021-10-28T22:35:05Z"

Currently, set.remove() returns a boolean value that represents whether or not the element was removed. It would be desirable to have another method that would return the removed element for cases where a user has overloaded the == operator on their own type.

Proposal 1: remove() and drop() -- sort of do what Python does

  • Python has a set.remove() that throws if the element is not found and a drop() that does nothing if the element is not found
  • this proposal is to change set.remove() to return the element found and add a set.drop() that is equivalent to our current set.remove()

Proposal 2: keep set.remove() the same and add a more verbose method that returns

  • the more verbose method could be something like map.getAndRemove() (though, this method halts, which we want to avoid here)
  • other ideas that came up: fetchRemove(), take()
  • this more verbose method would also throw in the case where the object is not found

Proposal 3: keep set.remove() the same and only implement this new element returning remove if a user requests it