folktale / data.task

Migrating to https://github.com/origamitower/folktale
MIT License
425 stars 45 forks source link

Why do you think Promises A+ are broken? #6

Closed yamadapc closed 10 years ago

yamadapc commented 10 years ago

I was wondering around github and decided to take another look at pinky, just to see how it was going. But I stumbled on the fact you abandoned it.

I came here and looked around a bit, but I honestly didn't get the point behind this library. Could you explain why you think Promises A+ is broken?

I'm not sure; just wanted to have some input from you.

(I do get that if you correctly implement a monadic instance for this Future value, you'd get to work more functionally, just got the impression this was much more an extension to promises, than something conceptually different.)

robotlolita commented 10 years ago

Ah, I wrote a blog post about this before: http://robotlolita.github.io/2013/06/28/promises-considered-harmful.html

But basically boils down to three things:

1) Promises/A+ has a complex then method which has an impossible-to-type overloading, and this makes composing things more difficult. It also makes it impossible to provide a monad instance for them, and monads are a huge deal for me here.

2) Promises/A+ catches all errors by default. I've been bitten countless times by this because I have a terrible memory, and these errors are really difficult to debug, and might lead to undefined behaviour. I'd rather have to tell explicitly which errors I'm interested in handling.

3) I wanted purity. I could do this with Promises/A+, but most of them don't, and then there's the two points above.

So I decided to start from the scratch.

vendethiel commented 10 years ago

Also see https://github.com/promises-aplus/constructor-spec/issues/24 I guess.