From 5f340d0545ab0e52cc551bf6d78b1416eb917e91 Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Mon, 27 Mar 2017 01:24:15 +0300 Subject: [PATCH] minor --- 1-js/06-advanced-functions/10-bind/article.md | 296 +---------------- .../1-ask-currying}/solution.md | 0 .../1-ask-currying}/task.md | 0 .../11-currying-partials/article.md | 298 ++++++++++++++++++ .../article.md | 0 2-ui/1-document/02-dom-nodes/article.md | 24 +- figures.sketch | Bin 14589952 -> 14827520 bytes 7 files changed, 312 insertions(+), 306 deletions(-) rename 1-js/06-advanced-functions/{10-bind/6-ask-currying => 11-currying-partials/1-ask-currying}/solution.md (100%) rename 1-js/06-advanced-functions/{10-bind/6-ask-currying => 11-currying-partials/1-ask-currying}/task.md (100%) create mode 100644 1-js/06-advanced-functions/11-currying-partials/article.md rename 1-js/06-advanced-functions/{11-arrow-functions => 12-arrow-functions}/article.md (100%) diff --git a/1-js/06-advanced-functions/10-bind/article.md b/1-js/06-advanced-functions/10-bind/article.md index 4188df39..713e342e 100644 --- a/1-js/06-advanced-functions/10-bind/article.md +++ b/1-js/06-advanced-functions/10-bind/article.md @@ -198,300 +198,8 @@ for (let key in user) { JavaScript libraries also provide functions for convenient mass binding , e.g. [_.bindAll(obj)](http://lodash.com/docs#bindAll) in lodash. ```` - - -## Partial application - -Till now we were only talking about binding `this`. Now let's make a step further. - -We can bind not only `this`, but also arguments. That's rarely done, but sometimes can be handy. - -The full syntax of `bind`: - -```js -let bound = func.bind(context, arg1, arg2, ...); -``` - -It allows to bind context as `this` and starting arguments of the function. - -For instance, we have a multiplication function `mul(a, b)`: - -```js -function mul(a, b) { - return a * b; -} -``` - -Let's use `bind` to create a function `double` on its base: - -```js run -*!* -let double = mul.bind(null, 2); -*/!* - -alert( double(3) ); // = mul(2, 3) = 6 -alert( double(4) ); // = mul(2, 4) = 8 -alert( double(5) ); // = mul(2, 5) = 10 -``` - -The call to `mul.bind(null, 2)` creates a new function `double` that passes calls to `mul`, fixing `null` as the context and `2` as the first argument. Further arguments are passed "as is". - -That's called [partial function application](https://en.wikipedia.org/wiki/Partial_application) -- we create a new function by fixing some parameters of the existing one. - -Please note that here we actually don't use `this` here. But `bind` requires it, so we must put in something like `null`. - -The function `triple` in the code below triples the value: - -```js run -*!* -let triple = mul.bind(null, 3); -*/!* - -alert( triple(3) ); // = mul(3, 3) = 9 -alert( triple(4) ); // = mul(3, 4) = 12 -alert( triple(5) ); // = mul(3, 5) = 15 -``` - -Why do we usually make a partial function? - -Here our benefit is that we created an independent function with a readable name (`double`, `triple`). We can use it and don't write the first argument of every time, cause it's fixed with `bind`. - -In other cases, partial application is useful when we have a very generic function, and want a less universal variant of it for convenience. - -For instance, we have a function `send(from, to, text)`. Then, inside a `user` object we may want to use a partial variant of it: `sendTo(to, text)` that sends from the current user. - -### Going partial without context - -What if we'd like to fix some arguments, but not bind `this`? - -The native `bind` does not allow that. We can't just omit the context and jump to arguments. - -Fortunately, a `partial` function for binding only arguments can be easily implemented. - -Like this: - -```js run -*!* -function partial(func, ...argsBound) { - return function(...args) { // (*) - return func.call(this, ...argsBound, ...args); - } -} -*/!* - -// Usage: -let user = { - firstName: "John", - say(time, phrase) { - alert(`[${time}] ${this.firstName}: ${phrase}!`); - } -}; - -// add a partial method that says something now by fixing the first argument -user.sayNow = partial(user.say, new Date().getHours() + ':' + new Date().getMinutes()); - -user.sayNow("Hello"); -// Something like: -// [10:00] Hello, John! -``` - -The result of `partial(func[, arg1, arg2...])` call is a wrapper `(*)` that calls `func` with: -- Same `this` as it gets (for `user.sayNow` call it's `user`) -- Then gives it `...argsBound` -- arguments from the `partial` call (`"10:00"`) -- Then gives it `...args` -- arguments given to the wrapper (`"Hello"`) - -So easy to do it the spread operator, right? - -Also there's a ready [_.partial](https://lodash.com/docs#partial) implementation from lodash library. - -## Currying - -Sometimes people mix up partial function application mentioned above with another thing named "currying". That's another interesting technique of working with functions that we just have to mention here. - -[Currying](https://en.wikipedia.org/wiki/Currying) is translating a function from callable as `f(a, b, c)` into callable as `f(a)(b)(c)`. - -Let's make `curry` function that performs currying for binary functions. In other words, it translates `f(a, b)` into `f(a)(b)`: - -```js run -*!* -function curry(func) { - return function(a) { - return function(b) { - return func(a, b); - }; - }; -} -*/!* - -// usage -function sum(a, b) { - return a + b; -} - -let carriedSum = curry(sum); - -alert( carriedSum(1)(2) ); // 3 -``` - -As you can see, the implementation is a series of wrappers. - -- The result of `curry(func)` is a wrapper `function(a)`. -- When it is called like `sum(1)`, the argument is saved in the Lexical Environment, and a new wrapper is returned `function(b)`. -- Then `sum(1)(2)` finally calls `function(b)` providing `2`, and it passes the call to the original multi-argument `sum`. - -More advanced implementations of currying like [_.curry](https://lodash.com/docs#curry) from lodash library do something more sophisticated. They return a wrapper that allows a function to be called normally when all arguments are supplied *or* returns a partial otherwise. - -```js -function curry(f) { - return function(..args) { - // if args.length == f.length (as many arguments as f has), - // then pass the call to f - // otherwise return a partial function that fixes args as first arguments - }; -} -``` - -### Currying? What for? - -Advanced currying allows both to keep the function callable normally and to get partials easily. To understand the benefits we definitely need a worthy real-life example. - -For instance, we have the logging function `log(date, importance, message)` that formats and output the information. In real projects such functions also have many other useful features like: sending it over the network or filtering: - -```js -function log(date, importance, message) { - alert(`[${date.getHours()}:${date.getMinutes()}] [${importance}] ${message}`); -} -``` - -Let's curry it! - -```js -log = _.curry(log); -``` - -After that `log` still works the normal way: - -```js -log(new Date(), "DEBUG", "some debug"); -``` - -...But also can be called in the curried form: - -```js -log(new Date())("DEBUG")("some debug"); // log(a)(b)(c) -``` - -Let's get a convenience function for today's logs: - -```js -// todayLog will be the partial of log with fixed first argument -let todayLog = log(new Date()); - -// use it -todayLog("INFO", "message"); // [HH:mm] INFO message -``` - -And now a convenience function for today's debug messages: - -```js -let todayDebug = todayLog("DEBUG"); - -todayDebug("message"); // [HH:mm] DEBUG message -``` - -So: -1. We didn't loose anything after currying: `log` is still callable normally. -2. We were able to generate partial functions that are convenient in many cases. - -### Advanced curry implementation - -In case you're interested, here's the "advanced" curry implementation that we could use above. - -```js run -function curry(func) { - - return function curried(...args) { - if (args.length >= func.length) { - return func.apply(this, args); - } else { - return function(...args2) { - return curried.apply(this, args.concat(args2)); - } - } - }; - -} - -function sum(a, b, c) { - return a + b + c; -} - -let curriedSum = curry(sum); - -// still callable normally -alert( curried(1, 2, 3) ); // 6 - -// get the partial with curried(1) and call it with 2 other arguments -alert( curried(1)(2,3) ); // 6 - -// full curried form -alert( curried(1)(2)(3) ); // 6 -``` - -The new `curry` may look complicated, but it's actually pretty easy to understand. - -The result of `curry(func)` is the wrapper `curried` that looks like this: - -```js -// func is the function to transform -function curried(...args) { - if (args.length >= func.length) { // (1) - return func.apply(this, args); - } else { - return function pass(...args2) { // (2) - return curried.apply(this, args.concat(args2)); - } - } -}; -``` - -When we run it, there are two branches: - -1. Call now: if passed `args` count is the same as the original function has in its definition (`func.length`) or longer, then just pass the call to it. -2. Get a partial: otherwise, `func` is not called yet. Instead, another wrapper `pass` is returned, that will re-apply `curried` providing previous arguments together with the new ones. Then on a new call, again, we'll get either a new partial (if not enough arguments) or, finally, the result. - -For instance, let's see what happens in the case of `sum(a, b, c)`. Three arguments, so `sum.length = 3`. - -For the call `curried(1)(2)(3)`: - -1. The first call `curried(1)` remembers `1` in its Lexical Environment, and returns a wrapper `pass`. -2. The wrapper `pass` is called with `(2)`: it takes previous args (`1`), concatenates them with what it got `(2)` and calls `curried(1, 2)` with them together. - - As the argument count is still less than 3, `curry` returns `pass`. -3. The wrapper `pass` is called again with `(3)`, for the next call `pass(3)` takes previous args (`1`, `2`) and adds `3` to them, making the call `curried(1, 2, 3)` -- there are `3` arguments at last, they are given to the original function. - -If that's still not obvious, just trace the calls sequence in your mind or on the paper. - -```smart header="Fixed-length functions only" -The currying requires the function to have a known fixed number of arguments. -``` - -```smart header="A little more than currying" -By definition, currying should convert `sum(a, b, c)` into `sum(a)(b)(c)`. - -But most implementations of currying in JavaScript are advanced, as described: they also keep the function callable in the multi-argument variant. -``` - ## Summary -- Method `func.bind(context, ...args)` returns a "bound variant" of function `func` that fixes the context `this` and first arguments if given. +Method `func.bind(context, ...args)` returns a "bound variant" of function `func` that fixes the context `this` and first arguments if given. - We may need to fix a context for passing an object method somewhere to be called. For example, to `setTimeout`. - -- When we fix some arguments of an existing function, the resulting (less universal) function is called *a partial*. We saw other ways of making partials than `bind`. - - Partials are convenient when we don't want to repeat the same argument over and over again. Like if we have a `send(from, to)` function, and `from` should always be the same for our task, we can get a partial and go on with it. - -- *Currying* is a transform that makes `f(a,b,c)` callable as `f(a)(b)(c)`. JavaScript implementations usually both keep the function callable normally and return the partial if arguments count is not enough. - - Currying is great when we want easy partials. As we've seen in the logging example: the universal function `log(date, importance, message)` after currying gives us partials when called with one argument like `log(date)` or two arguments `log(date, importance)`. +Usually we apply `bind` to fix `this` in an object method, so that we can pass it somewhere. For example, to `setTimeout`. There are more reasons to `bind` in the modern development, we'll meet them later. diff --git a/1-js/06-advanced-functions/10-bind/6-ask-currying/solution.md b/1-js/06-advanced-functions/11-currying-partials/1-ask-currying/solution.md similarity index 100% rename from 1-js/06-advanced-functions/10-bind/6-ask-currying/solution.md rename to 1-js/06-advanced-functions/11-currying-partials/1-ask-currying/solution.md diff --git a/1-js/06-advanced-functions/10-bind/6-ask-currying/task.md b/1-js/06-advanced-functions/11-currying-partials/1-ask-currying/task.md similarity index 100% rename from 1-js/06-advanced-functions/10-bind/6-ask-currying/task.md rename to 1-js/06-advanced-functions/11-currying-partials/1-ask-currying/task.md diff --git a/1-js/06-advanced-functions/11-currying-partials/article.md b/1-js/06-advanced-functions/11-currying-partials/article.md new file mode 100644 index 00000000..78fa6899 --- /dev/null +++ b/1-js/06-advanced-functions/11-currying-partials/article.md @@ -0,0 +1,298 @@ +libs: + - lodash + +--- + +# Currying and partials + +Till now we were only talking about binding `this`. Now let's make a step further. + +We can bind not only `this`, but also arguments. That's rarely done, but sometimes can be handy. + +[cut] + +The full syntax of `bind`: + +```js +let bound = func.bind(context, arg1, arg2, ...); +``` + +It allows to bind context as `this` and starting arguments of the function. + +For instance, we have a multiplication function `mul(a, b)`: + +```js +function mul(a, b) { + return a * b; +} +``` + +Let's use `bind` to create a function `double` on its base: + +```js run +*!* +let double = mul.bind(null, 2); +*/!* + +alert( double(3) ); // = mul(2, 3) = 6 +alert( double(4) ); // = mul(2, 4) = 8 +alert( double(5) ); // = mul(2, 5) = 10 +``` + +The call to `mul.bind(null, 2)` creates a new function `double` that passes calls to `mul`, fixing `null` as the context and `2` as the first argument. Further arguments are passed "as is". + +That's called [partial function application](https://en.wikipedia.org/wiki/Partial_application) -- we create a new function by fixing some parameters of the existing one. + +Please note that here we actually don't use `this` here. But `bind` requires it, so we must put in something like `null`. + +The function `triple` in the code below triples the value: + +```js run +*!* +let triple = mul.bind(null, 3); +*/!* + +alert( triple(3) ); // = mul(3, 3) = 9 +alert( triple(4) ); // = mul(3, 4) = 12 +alert( triple(5) ); // = mul(3, 5) = 15 +``` + +Why do we usually make a partial function? + +Here our benefit is that we created an independent function with a readable name (`double`, `triple`). We can use it and don't write the first argument of every time, cause it's fixed with `bind`. + +In other cases, partial application is useful when we have a very generic function, and want a less universal variant of it for convenience. + +For instance, we have a function `send(from, to, text)`. Then, inside a `user` object we may want to use a partial variant of it: `sendTo(to, text)` that sends from the current user. + +## Going partial without context + +What if we'd like to fix some arguments, but not bind `this`? + +The native `bind` does not allow that. We can't just omit the context and jump to arguments. + +Fortunately, a `partial` function for binding only arguments can be easily implemented. + +Like this: + +```js run +*!* +function partial(func, ...argsBound) { + return function(...args) { // (*) + return func.call(this, ...argsBound, ...args); + } +} +*/!* + +// Usage: +let user = { + firstName: "John", + say(time, phrase) { + alert(`[${time}] ${this.firstName}: ${phrase}!`); + } +}; + +// add a partial method that says something now by fixing the first argument +user.sayNow = partial(user.say, new Date().getHours() + ':' + new Date().getMinutes()); + +user.sayNow("Hello"); +// Something like: +// [10:00] Hello, John! +``` + +The result of `partial(func[, arg1, arg2...])` call is a wrapper `(*)` that calls `func` with: +- Same `this` as it gets (for `user.sayNow` call it's `user`) +- Then gives it `...argsBound` -- arguments from the `partial` call (`"10:00"`) +- Then gives it `...args` -- arguments given to the wrapper (`"Hello"`) + +So easy to do it the spread operator, right? + +Also there's a ready [_.partial](https://lodash.com/docs#partial) implementation from lodash library. + +## Currying + +Sometimes people mix up partial function application mentioned above with another thing named "currying". That's another interesting technique of working with functions that we just have to mention here. + +[Currying](https://en.wikipedia.org/wiki/Currying) is translating a function from callable as `f(a, b, c)` into callable as `f(a)(b)(c)`. + +Let's make `curry` function that performs currying for binary functions. In other words, it translates `f(a, b)` into `f(a)(b)`: + +```js run +*!* +function curry(func) { + return function(a) { + return function(b) { + return func(a, b); + }; + }; +} +*/!* + +// usage +function sum(a, b) { + return a + b; +} + +let carriedSum = curry(sum); + +alert( carriedSum(1)(2) ); // 3 +``` + +As you can see, the implementation is a series of wrappers. + +- The result of `curry(func)` is a wrapper `function(a)`. +- When it is called like `sum(1)`, the argument is saved in the Lexical Environment, and a new wrapper is returned `function(b)`. +- Then `sum(1)(2)` finally calls `function(b)` providing `2`, and it passes the call to the original multi-argument `sum`. + +More advanced implementations of currying like [_.curry](https://lodash.com/docs#curry) from lodash library do something more sophisticated. They return a wrapper that allows a function to be called normally when all arguments are supplied *or* returns a partial otherwise. + +```js +function curry(f) { + return function(..args) { + // if args.length == f.length (as many arguments as f has), + // then pass the call to f + // otherwise return a partial function that fixes args as first arguments + }; +} +``` + +## Currying? What for? + +Advanced currying allows both to keep the function callable normally and to get partials easily. To understand the benefits we definitely need a worthy real-life example. + +For instance, we have the logging function `log(date, importance, message)` that formats and output the information. In real projects such functions also have many other useful features like: sending it over the network or filtering: + +```js +function log(date, importance, message) { + alert(`[${date.getHours()}:${date.getMinutes()}] [${importance}] ${message}`); +} +``` + +Let's curry it! + +```js +log = _.curry(log); +``` + +After that `log` still works the normal way: + +```js +log(new Date(), "DEBUG", "some debug"); +``` + +...But also can be called in the curried form: + +```js +log(new Date())("DEBUG")("some debug"); // log(a)(b)(c) +``` + +Let's get a convenience function for today's logs: + +```js +// todayLog will be the partial of log with fixed first argument +let todayLog = log(new Date()); + +// use it +todayLog("INFO", "message"); // [HH:mm] INFO message +``` + +And now a convenience function for today's debug messages: + +```js +let todayDebug = todayLog("DEBUG"); + +todayDebug("message"); // [HH:mm] DEBUG message +``` + +So: +1. We didn't loose anything after currying: `log` is still callable normally. +2. We were able to generate partial functions that are convenient in many cases. + +## Advanced curry implementation + +In case you're interested, here's the "advanced" curry implementation that we could use above. + +```js run +function curry(func) { + + return function curried(...args) { + if (args.length >= func.length) { + return func.apply(this, args); + } else { + return function(...args2) { + return curried.apply(this, args.concat(args2)); + } + } + }; + +} + +function sum(a, b, c) { + return a + b + c; +} + +let curriedSum = curry(sum); + +// still callable normally +alert( curried(1, 2, 3) ); // 6 + +// get the partial with curried(1) and call it with 2 other arguments +alert( curried(1)(2,3) ); // 6 + +// full curried form +alert( curried(1)(2)(3) ); // 6 +``` + +The new `curry` may look complicated, but it's actually pretty easy to understand. + +The result of `curry(func)` is the wrapper `curried` that looks like this: + +```js +// func is the function to transform +function curried(...args) { + if (args.length >= func.length) { // (1) + return func.apply(this, args); + } else { + return function pass(...args2) { // (2) + return curried.apply(this, args.concat(args2)); + } + } +}; +``` + +When we run it, there are two branches: + +1. Call now: if passed `args` count is the same as the original function has in its definition (`func.length`) or longer, then just pass the call to it. +2. Get a partial: otherwise, `func` is not called yet. Instead, another wrapper `pass` is returned, that will re-apply `curried` providing previous arguments together with the new ones. Then on a new call, again, we'll get either a new partial (if not enough arguments) or, finally, the result. + +For instance, let's see what happens in the case of `sum(a, b, c)`. Three arguments, so `sum.length = 3`. + +For the call `curried(1)(2)(3)`: + +1. The first call `curried(1)` remembers `1` in its Lexical Environment, and returns a wrapper `pass`. +2. The wrapper `pass` is called with `(2)`: it takes previous args (`1`), concatenates them with what it got `(2)` and calls `curried(1, 2)` with them together. + + As the argument count is still less than 3, `curry` returns `pass`. +3. The wrapper `pass` is called again with `(3)`, for the next call `pass(3)` takes previous args (`1`, `2`) and adds `3` to them, making the call `curried(1, 2, 3)` -- there are `3` arguments at last, they are given to the original function. + +If that's still not obvious, just trace the calls sequence in your mind or on the paper. + +```smart header="Fixed-length functions only" +The currying requires the function to have a known fixed number of arguments. +``` + +```smart header="A little more than currying" +By definition, currying should convert `sum(a, b, c)` into `sum(a)(b)(c)`. + +But most implementations of currying in JavaScript are advanced, as described: they also keep the function callable in the multi-argument variant. +``` + +## Summary + +- When we fix some arguments of an existing function, the resulting (less universal) function is called *a partial*. We can use `bind` to get a partial, but there are other ways also. + + Partials are convenient when we don't want to repeat the same argument over and over again. Like if we have a `send(from, to)` function, and `from` should always be the same for our task, we can get a partial and go on with it. + +- *Currying* is a transform that makes `f(a,b,c)` callable as `f(a)(b)(c)`. JavaScript implementations usually both keep the function callable normally and return the partial if arguments count is not enough. + + Currying is great when we want easy partials. As we've seen in the logging example: the universal function `log(date, importance, message)` after currying gives us partials when called with one argument like `log(date)` or two arguments `log(date, importance)`. diff --git a/1-js/06-advanced-functions/11-arrow-functions/article.md b/1-js/06-advanced-functions/12-arrow-functions/article.md similarity index 100% rename from 1-js/06-advanced-functions/11-arrow-functions/article.md rename to 1-js/06-advanced-functions/12-arrow-functions/article.md diff --git a/2-ui/1-document/02-dom-nodes/article.md b/2-ui/1-document/02-dom-nodes/article.md index f686f4ee..7234e9a6 100644 --- a/2-ui/1-document/02-dom-nodes/article.md +++ b/2-ui/1-document/02-dom-nodes/article.md @@ -31,9 +31,9 @@ The DOM represents HTML as a tree structure of tags. Here's how it looks:
```online @@ -69,9 +69,9 @@ Here are no space-only text nodes:
```smart header="Edge spaces and in-between empty text are usually hidden in tools" @@ -95,9 +95,9 @@ As an example, if the HTML file is a single word `"Hello"`, the browser will wra
While generating DOM, browser automatically processes errors in the document, closes tags and so on. @@ -116,9 +116,9 @@ Such an "invalid" document:
````warn header="Tables always have ``" @@ -134,9 +134,9 @@ DOM-structure will be:
You see? The `` has appeared out of nowhere. Should keep in mind while working with tables to evade surprises. @@ -165,9 +165,9 @@ Let's add more tags and a comment to the page:
Here we see a new tree node type -- *comment node*, labeled as `#comment`. diff --git a/figures.sketch b/figures.sketch index 81d9c412d594ae6fb1733e8d8816e12ad08550e9..817d07ec09be67214e5fd6d9522555add4384fb2 100644 GIT binary patch literal 14827520 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