3 ms·
It would appear this argument order is due to Principle 5: Data comes last, for consistent currying. You might not like it, or the library (I don't write JS on
by samatman 4y ago
It would appear this argument order is due to Principle 5: Data comes last, for consistent currying.
You might not like it, or the library (I don't write JS on purpose, so no opinion), but it's right there in the README.
- torgard 4y agoI was not aware of the data-last convention. Thanks! Makes a lot of sense. My mental model of assign was backwards, and it took me a while to comprehend why their implementation would be data-last. So, the data is the object that is being modified? And the idea is it lets you write stuff like this more easily: const addStuffToObject = stuff -> object -> assign({ "some_stuff": stuff }, object); const addWeirdStuff = addStuffToObject("weird stuff"); const weirdObj = addWeirdStuff({ "foo": "bar" });
- samatman 4y agoYes, and this sort of application (pun intended) is what the one-liner library is for. If you have a function isEqualTo(a, b), you can curry(isEqualTo, 5) and filter with it. `assign` could be used in the same way for assigning/overwriting the same field in an array of Objects, and so on.