Also, I wonder if we should punt on this until we do a `HugeSet[T]` api:
```scala
trait HugeSet[+T] {
  def union[U>:T](that: HugeSet[U]): HugeSet[U]
  def intersection[U>:T](that: HugeSet[U]): HugeSet[U]
  def filter(fn: T => Boolean): HugeSet[T]
  def toTypedPipe: TypedPipe[T]
  def toTypedPipeWithReducers(red: Int): TypedPipe[T]
}
```
Then distinct can return a HugeSet, and then an implicit conversion can go back to TypedPipe. Thoughts on taking this further?

In the mean time, you can add this function you want to your own code with the RichTypedPipe pattern.