2016-04-11 14 views
0

ile kleisli birleştirmek.nasıl koşullu bağlı f kullanacağı bir bağdaştırıcının ihtiyaç</p> <pre><code>def f : Kleisli[Future, Context, Seq[Tip]] = ??? </code></pre> <p>f varolan yöntem göz önüne alındığında şartlı

def g(selected: Seq[Tip]) = 
    if (selected.isEmpty) 
     f 
    else 
     Kleisli[Future, Context, Seq[Tip]] { _ => Future.successful(selected.maxsBy(_.creationDate))} 

daha iyi bir yolu var mı: İşte benim şimdiki impl nedir? Eğer içine Seq[Tip] kaldırmak için daha kısa bir yol arıyorsanız

(asansör bir Kleisli içine tek değer oldukça ayrıntılı olduğunu parçası)

cevap

1

senin Kleisli: kullanabileceğiniz ask ve map:

:
import scalaz.Kleisli 
import scalaz.std.scalaFuture._ 
import scala.concurrent.Future 
import scala.concurrent.ExecutionContext.Implicits.global 

Kleisli.ask[Future, Context] map (_ => selected.maxsBy(_.creationDate)) 

Ayrıca Context => Seq[Tip] sizin Kleisli dönüşebilen

+0

Başka bir çözüm: Gelecek (t) .liftKleisli –

İlgili konular