Re: Filter on future doesn't make sense
Avi Levi <[email protected]> Fri, 1 Jul 2016 11:35:41 +0300
| Newsgroups | gmane.comp.lang.scala |
|---|---|
| Message-ID | <CAP0Sp2=_SbgR+zWy50JFLvubWP5AyxRZaBY-f0YD0=KyRkc1+A@mail.gmail.com> |
Hi Victor , I totally agree that expectations are subjective . But like you said a filter on List will return a List if no element comply than we will get Nil which represents an empty container (empty list) a filter on option will return a option if the element doesn't comply than we will get None which represents an empty container following the same logic a filter on future should return something that express empty container , defiantly not an exception, because it is not an exception we do intend to filter those elements. 2016-07-01 10:50 GMT+03:00 Viktor Klang <[email protected]>: > Hi Avi, > > I see what you mean. > > I'd want to avoid discussing expectation since it is subjective. I will > however note that the actualnsemantics of the filter method on Future needs > improvement: > http://www.scala-lang.org/api/2.11.8/index.html#scala.concurrent.Future@filter(p:T= > >Boolean)(implicitexecutor:scala.concurrent.ExecutionContext):scala.concurrent.Future[T] > > As for might not return the value, the same goes for all filter-methods: > > List returns List, but it might not have any elements at all. Option > returns Option but can be Some or None, Future is either Success or Failure. > > If success has an optionality aspect in your usage, use Future of Option > to express that, that would be my recommendation. > > -- > Cheers, > √ > On Jul 1, 2016 9:20 AM, "Avi Levi" <[email protected]> wrote: > >> Thanks Victor, >> Of course it can be implemented as you suggested. But still I can argue >> that the current implementation is not "really filtering" the results as >> one might expect and less expressive if it might or not return the value >> than Option is more expressive, don't you agree? >> On Jul 1, 2016 10:06 AM, "Viktor Klang" <[email protected]> wrote: >> >>> Hi Avi, >>> >>> Use Fututre[Option[Int]] if you want to deal with Some/None as a result >>> of filter ( f.map(_.filter(p) ) (alt. see monad transformers) >>> >>> -- >>> Cheers, >>> √ >>> On Jul 1, 2016 8:53 AM, "Avi Levi" <[email protected]> wrote: >>> >>> I was trying to figure out what should I accept when filtering over a >>> future . >>> the current implementation yields either a T or an exception which kind >>> of breaks referential transparency (doesn't it ?) . >>> on the other hand what can I expect given this expression >>> >>> *def foo(i:Int):Future[Int]* >>> >>> the type result of >>> >>> *foo(1).filter(_ % 2 == 0)* >>> >>> >>> I.M.H.O I would expect it to yield Option[T] which makes more sense to >>> express that we might get a value that pass the filter or not . is that >>> make sense ? >>> >>> Cheers >>> Avi >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "scala-language" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "scala-language" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/scala-language/wpGOB8f7qmY/unsubscribe >>> . >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "scala-language" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> > -- > You received this message because you are subscribed to a topic in the > Google Groups "scala-language" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/scala-language/wpGOB8f7qmY/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- Sincerely, Avi Levi m: +972-52-3459959 <https://www.linkedin.com/in/leviavi> https://about.me/avi.levi -- You received this message because you are subscribed to the Google Groups "scala-language" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.