Min/max with Option[T] for possibly empty Seq?
seq.reduceOption(_ min _) does what you want? Edit: Here’s an example incorporating your _.something: case class Foo(a: Int, b: Int) val seq = Seq(Foo(1,1),Foo(2,0),Foo(0,3)) val ord = Ordering.by((_: Foo).b) seq.reduceOption(ord.min) //Option[Foo] = Some(Foo(2,0)) or, as generic method: def minOptionBy[A, B: Ordering](seq: Seq[A])(f: A => B) = seq reduceOption Ordering.by(f).min which you could invoke with minOptionBy(seq)(_.something)