From what I can tell the default values on filter and other methods are simply because monadic html wants you to have all your Var's populated with a value.
Yes, you nailed it. That's a core design decision with lots of implication, I don't think this is something that you could change just on
Product. I understand the resistance against
Rx[Option[A]], but I think that's really the way to go here.
Rx, instead of throwing in
def collect[B](f: PartialFunction[A, B]): Rx[B] def dropIf[B >: A](f: B => Boolean): Rx[B] def keepIf[B >: A](f: B => Boolean): Rx[B]