我有一个接受函数的类f: Option[Seq[Option[A]]] => Option[A]]
case class Function[A](operator: Option[Seq[Option[A]]] => Option[A], name: String, arity: Int)
我希望这个类的用户能够不必担心Option
框架。所以用户会传递一个函数g: Seq[A] => A
,并且在后台我会提升该函数。起重部分是我无法做到的。
这就是我所拥有的(使用optionInstance.lift
scalaz):
object Function {
def apply[A](operator: Seq[A] => A) = new Function(optionInstance.lift(operator),"a", 1)
}
但是,这不会编译,因为电梯操作员正在返回Option[Seq[A]]
而不是Option[Seq[Option[A]]]
. 如何才能做到这一点?