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.