Usar una función polimórfica para extraer un objeto de Opciones

La documentación sin forma explica cómo usar funciones polimórficas para crear una función que asigne objetos en un tipo de contenedor a otro, pero ¿qué pasa cuando desea desempaquetar cosas de su contenedor?

Tengo una lista de opciones

val options = Some(1) :: Some("A") :: Some(3.5) :: HNil

Quiero una función polimórfica que pueda extraer el contenido de cada una de las Opciones.

// This is incorrect:
object uuu extends (Option ~> Any) {
  def apply[T](l:Option[T]):T = {
    l.get
  }
}

Si esta función fuera correcta, me gustaría el siguiente comportamiento:

options.map(uuu) // I want: 1 :: "A" :: 3.5 :: HNil

¿Cómo puedo corregir esto para que mi función polimórfica realmente funcione?

Respuestas a la pregunta(1)

Su respuesta a la pregunta