A new version of Kernel was added to project The Inbox:
http://source.squeak.org/inbox/Kernel-tonyg.1149.mcz==================== Summary ====================
Name: Kernel-tonyg.1149
Author: tonyg
Time: 31 January 2018, 11:45:27.771328 pm
UUID: ab03b520-f8a0-4aa9-87c4-9b7e9dfb0369
Ancestors: Kernel-tonyg.1148
Add an alias for Promise>>#then:, called #>>=, echoing the monadic bind operator.
Use of a binary selector allows for convenient chaining of Promises without lots of nested parentheses.
For example:
(self produceSomePromise)
>>= [:v | self produceAnotherPromiseInvolving: v]
>>= [:v | self makeYetAnotherUsing: v]
instead of the more cumbersome
((self produceSomePromise)
then: [:v | self produceAnotherPromiseInvolving: v])
then: [:v | self makeYetAnotherUsing: v]
Also adds #>>, again named after the analogous monadic operator, which is like #>>= but does not pass the value from the left-hand-side promise to the continuation block.
=============== Diff against Kernel-tonyg.1148 ===============
Item was added:
+ ----- Method: Promise>>>> (in category 'monad') -----
+ >> resolvedBlock
+ "Like >>=, but discards the result of the promise."
+ ^ self then: [:v | resolvedBlock value]!
Item was added:
+ ----- Method: Promise>>>>= (in category 'monad') -----
+ >>= resolvedBlock
+ "Alias for `then:` allowing convenient chaining."
+ ^ self then: resolvedBlock!