C++, C# and JavaScript are becoming concurrent constraint logic languages. Futures provide a non-eager evaluation model. Next we realize resolving a future twice is fine if both values are equal, but should fail otherwise. What's failure? We throw an exception and backtrack...
-
-
Replying to @TimSweeneyEpic
How can the future resolve to a different value? Shouldn't it's resolution be an immutable constant?
2 replies 0 retweets 1 like -
Replying to @prvncher
The notion of "resolving a future" is generalized into "unifying two values, one or both of which may be flexible". resolve(fu,1) becomes unify(fu,1), equivalent to unify(1,fu). When you unify(fu,1) then unify(fu,2) the code fails by throwing an exception.
1 reply 0 retweets 5 likes -
Replying to @TimSweeneyEpic @prvncher
The intent is that the exception is caught by an outside scope in which those futures aren't visible, hence you will never see contradictory resolution of a future.
1 reply 0 retweets 4 likes
The next step is for these languages to support joins and backtrack points, so that failure can undo some unifications and try again. Coroutines support part of what's needed for this.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.