Recompose is the library I use now in every project of mine.
When I first saw recompose, I immediately had one question — why does a library use the
compose function for enhancers composition?
All my previous knowledge about
compose told me that evaluation order of composed functions will be unnatural, not the same as code flow.
As an example:
gives the result
6 because evaluation order is
1 * 2 then 2
Before writing an issue that usage of
flow will be better, I created a fast check, something like:
And got the result on the screen equal to
4, so the order was natural even
compose was used. It was strange and was not expected by me.
At first I decided that library author uses his own handwritten version of
compose which is some kind of
lodash flow. I was wrong he used
I wrote what I see on the paper in simplified form.
So I got the “right” natural order of operations
(x + 2) and then
*2, just because
Recompose uses composition of enhancers and not the composition of property transformers.
That example somehow changed my mind and because of such “magic” of non magic things I love being a developer ;-).
Big thanks to Anton Shain for looking over this document draft.