lift transforms an ordinary function A => B into a function Option[A] => Option[B]. It lets existing functions operate on optional values without rewriting them for Option. section 4.3.2
Lifting an existing function
val absO: Option[Double] => Option[Double] = lift(math.abs) absO(Some(-1.0)) // Some(1.0) math.abs remains unchanged; lift adapts it after the fact. The same pattern supports parsing form strings into Option[Int] and combining the results with map2 before calling an ordinary two-argument function.
