This is the sort of discussion that would have been quite much nicer to have 6 months ago.
(and also why it is important to get involved in SIPs if one has a stake in it)
I think it is fair to say that general experience is that people only actually get involved after the API is roughly worked out and it doesn't quite look like they expected. It might be a better idea to work this observation into the SIP workflow - I know it must be extremely frustrating for the people behind the SIP.How would it be worked into the SIP workflow? By having less up-front discussion and rushing headlong into an (intentionally poor) implementation which is presented as a fait accompli to the community at large, who then go ballistic and offer vocal feedback. I understand this approach is being trialed by the JDK8 lambda guys.
ChrisOn Fri, Nov 9, 2012 at 10:52 AM, √iktor Ҡlang <viktor...@gmail.com> wrote:
This is the sort of discussion that would have been quite much nicer to have 6 months ago.
(and also why it is important to get involved in SIPs if one has a stake in it)Cheers,√
What happens if the Future[Either[Exception, T]] is failed?
However, I think people generally need to engage more in the things which they have a stake in, or just delegate to others and forfeit their right to whine – which is why I spent a lot of my spare time (which there is very little of) to be involved in SIP-14 – to be a part of the solution and not the problem.
contains a Failure instead of a Success
On Fri, Nov 9, 2012 at 10:41 AM, √iktor Ҡlang <viktor...@gmail.com> wrote:
What happens if the Future[Either[Exception, T]] is failed?
What do you mean by "is failed"?
Thanks everyone for the reply,@Heather - I understand why the general idea behind why it was named, but just had an issue with the name "either" (for the reasons listed). Obviously many of them are selfish in that I want to be able to migrate and create a easy migration from dispatch_2.9.2 to dispatch_2.10.0. Even without my selfish interest, either seems like a strange name ( https://twitter.com/n8han/status/265902526036066305 -- please don't crucify for me using Twitter for proof of anything).
@oxbows - I don't think anything can be done to the SIP workflow other than what Viktor said, which is to be more involved.@martin, @viktor - I wish I had been more involved in the process ( I am relatively new to Scala ), but I think Nathan was involved early on and added SIP methods to the Future, but either was added after this effort had been done. The SIP changed a lot and I think Nathan only looked at it at a few snapshots in time. I wanted to bring this up before 2.10.0-FINAL came out, but didn't realize that everyone is thinking only two RC's.
I am assuming by all the messages that there is no way to start a conversation about changing the name right now and for dispatch I should start migrating code to use a new name. If it helps, I will volunteer my time to change documentation, code, or whatever related to the name.
But that is my point, there is no way to enforce that at a type level.
def bippy(f: Future[Either[Exception, T]]) = …bippy(Future.failed(new OhnoesException))
On Fri, Nov 9, 2012 at 11:12 AM, √iktor Ҡlang <viktor...@gmail.com> wrote:
But that is my point, there is no way to enforce that at a type level.
def bippy(f: Future[Either[Exception, T]]) = …bippy(Future.failed(new OhnoesException))I'm sorry but that's completely outside scope.See, it is my intention as *the caller* to ensure that the *receiver* will get a future where any present failure becomes a success of a left.It's not about what I'm receiving, but about what I'm sending.
I am assuming by all the messages that there is no way to start a conversation about changing the name right now and for dispatch I should start migrating code to use a new name. If it helps, I will volunteer my time to change documentation, code, or whatever related to the name.val firstOf = future2 <insert suggested name here> future2val firstOf = future firstCompletedOf future2 //Clashes with Future.firstCompletedOf and is also quite unpleasant visuallyval firstOf = future race future2val firstOf = future || future2 // doesn't have the right semantics, people expect short-circuitPerhaps the right solution is to remove the method?
On Nov 9, 2012, at 2:19 PM, √iktor Ҡlang wrote:I am assuming by all the messages that there is no way to start a conversation about changing the name right now and for dispatch I should start migrating code to use a new name. If it helps, I will volunteer my time to change documentation, code, or whatever related to the name.val firstOf = future2 <insert suggested name here> future2val firstOf = future firstCompletedOf future2 //Clashes with Future.firstCompletedOf and is also quite unpleasant visuallyval firstOf = future race future2val firstOf = future || future2 // doesn't have the right semantics, people expect short-circuitPerhaps the right solution is to remove the method?I think that removing the method could be a workable solution. After all, it's got a very simple implementation in terms of Promise and tryComplete.
On Nov 9, 2012, at 2:19 PM, √iktor Ҡlang wrote:I am assuming by all the messages that there is no way to start a conversation about changing the name right now and for dispatch I should start migrating code to use a new name. If it helps, I will volunteer my time to change documentation, code, or whatever related to the name.
val firstOf = future2 <insert suggested name here> future2
val firstOf = future firstCompletedOf future2 //Clashes with Future.firstCompletedOf and is also quite unpleasant visually
val firstOf = future race future2
val firstOf = future || future2 // doesn't have the right semantics, people expect short-circuit
Perhaps the right solution is to remove the method?
I think that removing the method could be a workable solution. After all, it's got a very simple implementation in terms of Promise and tryComplete.
Cheers,Philipp
val firstOf = future || future2 // doesn't have the right semantics, people expect short-circuit