2017-08-11 6 views

答えて

0

これを実行できるようにするには、空文字をtypeclassとして実装する必要があります。その後、リフトの実装は

def liftOption[A : Empty](a: A): Option[A] = 
    if (Empty[A].isEmpty(a)) None else Some(a) 

かなり簡単になりますがあり猫にこれを置くかどうかについて、いくつかのdiscussionsはあったが、今では、実際にあなたができるすべてのApplicativeにそれを拡張することができalleycats

に常駐Empty (あなたは空の型を一致させるためにいくつかのadjustementsを必要とすることができるが、それは考えを示し):

def liftE[A: Empty, F[_]: Applicative, Empty](a: A): F[A] = 
    if (Empty[A].isEmpty(a)) Empty[F] 
    else Applicative[F].pure(a) 
+0

あなただけのリストケースを気にする場合は、あなたが実際に 'NonEmptyLを使用する場合がありますist': val res:オプション[NonEmptyList [String]] = NonEmptyList.fromList(list) ' –