Common idiom to find Set of what's mapped to?

There is a fairly common idiom, which I write now and then. Isn’t there an easier way to calculate something like the following.

(for {
      (_, states) <- dfa.F.groupBy(dfa.getExitValue)
    } yield states).toSet

Its getting the set of LHS values of what’s returned by groupBy

(for {
      (_, states) <- someSet.groupBy( f )
    } yield states).toSet

Is this the same thing? Is it the correct way to compute the Set?

dfa.F.groupBy(dfa.exitValue).values.toSet 
someSet.groupBy( f ).values.toSet

Yes, your for-loops and the .values version are equivalent. The base implementation of values in MapLike just uses the map’s iterator and uses next()._2 for next() to create an iterator over the values, so it does the same as the for loop.