πŸ‡ΊπŸ‡¦ Math.random(): javascript community
1.14K subscribers
363 photos
8 videos
530 links
Admin: @andrey_pk, @StartupEmulatorAdmin
YouTube ΠΊΠ°Π½Π°Π»: https://bit.ly/3cdY6HV
Download Telegram
β ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΆΠ°Ρ€Π³ΠΎΠ½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… программистов, Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ всСх Π½Π° слуху.

Ѐункция Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка (high order function / HOF) - это функция, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

const filter = (predicate, xs) => xs.filter(predicate)
const is = (type) => (x) => Object(x) instanceof type
filter(is(Number), [0, '1', 2, null]) // [0, 2]


Лямбда (Lambda) - это анонимная функция, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Лямбды ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ присвоСны ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ. Лямбды ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

;(
function (a) {
return a + 1
})
;(a) => a + 1
const add1 = (a) => a + 1
[1, 2].map((a) => a + 1)


БСгодня Π² ссылкС ΠΏΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ популярная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° javascript для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ стилС.

#Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅_ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
Новый ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° "Π­Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π½Π° javascript?"
Isomorphic git - git, написаный Π½Π° javascript. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… ΠΈ Π² node.js. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ измСнСниях, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ git.

https://github.com/isomorphic-git/isomorphic-git
⁠Брочно Π² Π½ΠΎΠΌΠ΅Ρ€! 18 дСкабря 2019-Π³ΠΎ Π³ΠΎΠ΄Π° Π²Ρ‹ΡˆΠ»Π° 8-я вСрсия javascript engine V8:

Performance (size & speed)
- Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ~40% мСньшС памяти
- оптимизация выполнСния built-in fns

JS
- Optional chaining
const nameLength = db?.user?.name?.length;
( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining )

- Nullish coalescing
props.enabled ?? true
( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator )

ВсС подробности ΠΏΠΎ ссылкС!
β Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 2 Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΠΈΠ· ΠΆΠ°Ρ€Π³ΠΎΠ½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программиста это ΠΌΠΎΠ½ΠΎΠΈΠ΄ ΠΈ ΠΌΠΎΠ½Π°Π΄Π°. Π˜Ρ‚Π°ΠΊ Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ Π·Π°Ρ‡Π΅ΠΌ это Π½ΡƒΠΆΠ½ΠΎ:

Моноид (monoid) - ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ-ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°. НапримСр:

1 + 1
[1, 2].concat([3, 4])

Когда ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ ΠΌΠΎΠ½ΠΎΠΈΠ΄Π°Ρ…, Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт (identity), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ влияСт Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚:

1 + 0

0 - Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт (identity)

[1,2].concat([])

[] - Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт (identity)

Монада (Monad) - ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΌΠΈΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Для простоты понимания ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠΎΠ½Π°Π΄ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

// Implementation
Array.prototype.chain = function (f) {
return this.reduce((acc, it) => acc.concat(f(it)), [])
}

// Usage
Array.of('cat,dog', 'fish,bird').chain((a) => a.split(',')) // ['cat', 'dog', 'fish', 'bird']

// Contrast to map
Array.of('cat,dog', 'fish,bird').map((a) => a.split(',')) // [['cat', 'dog'], ['fish', 'bird']]

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΌΠΎΠ½Π°Π΄Π°ΠΌΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ of ΠΈ chain. chain ΠΏΠΎΡ…ΠΎΠΆ Π½Π° map, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². chain Ρ‚Π°ΠΊ ΠΆΠ΅ извСстСн ΠΊΠ°ΠΊ flatmap ΠΈΠ»ΠΈ bind.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΡ€ΠΎ ΠΌΠΎΠ½Π°Π΄Ρ‹ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎ ссылкС Π²Π½ΠΈΠ·Ρƒ.

#Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅_ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
Π­Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π½Π° Javascript?

WebTorrent - torrent client написаный Π½Π° javascript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΈ Π² node.js.

https://github.com/webtorrent/webtorrent
State Of Javascript 2019 πŸ”₯
Π’Ρ€Π΅Π½Π΄Ρ‹, Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹
Π‘ΠΊΠ°Π½Π΄Π°Π»Ρ‹, Π˜Π½Ρ‚Ρ€ΠΈΠ³ΠΈ, РасслСдования
https://t.co/qcbd2kkHKK?amp=1
Π­Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π½Π° JavaScript?

Brain.js - Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для создания Π½Π΅ΠΉΡ€ΠΎΠ½Π½Ρ‹Ρ… сСтСй, написана Π½Π° JavaScript. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… ΠΈ Π² node.js. Π•ΡΡ‚ΡŒ GPU ускорСниС. Быстрая, простая ΠΈ лСгкая Π² использовании Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°.

https://github.com/BrainJS/brain.js
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со всякими матСматичСскими ΡˆΡ‚ΡƒΠΊΠ°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ градусы ЦСльсия Π² Π€Π°Ρ€Π΅Π½Π³Π΅ΠΉΡ‚Π°, Π΄ΡŽΠΉΠΌΡ‹ Π² сантимСтры ΠΈ Ρ‚.ΠΏ.
МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹ΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π½Π° javascript.
https://github.com/josdejong/mathjs
⁠Github Trending #4

- https://github.com/nuxt/nuxt.js - Vue.js Meta Framework to create complex, fast & universal web applications quickly.
- https://github.com/laurent22/joplin - Joplin - an open source note taking and to-do application with synchronization capabilities for Windows, macOS, Linux, Android and iOS. Forum: https://discourse.joplinapp.org/ https://joplinapp.org
- https://github.com/gatsbyjs/gatsby - Build blazing fast, modern apps and websites with React https://www.gatsbyjs.org
- https://github.com/renovatebot/renovate - Universal dependency update tool that fits into your workflows. https://renovatebot.com
- https://github.com/typicode/json-server - Get a full fake REST API with zero coding in less than 30 seconds (seriously)
- https://github.com/vuejs/vue-test-utils - πŸ”¬ Utilities for testing Vue components https://vue-test-utils.vuejs.org
- https://github.com/scullyio/scully - The Static Site Generator for Angular apps

#github_trending
Channel name was changed to Β«Math.random(): javascript communityΒ»
Π­Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π½Π° javascript?

Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, написаный Π½Π° javascript - систСма оптичСского распознавания символов (OCR). Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ (!) ΠΈ Π² node.js. РаспознаСт 100+ языков!

https://github.com/naptha/tesseract.js
Новая ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎΡ‚ Π°Π΄Π΅ΠΏΡ‚Π° RxJS, нашСго постоянного Π°Π²Ρ‚ΠΎΡ€Π° ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ участника нашСго ΠΊΠΎΠΌΡŒΡŽΠ½ΠΈΡ‚ΠΈ.

О Ρ‡Π΅ΠΌ ΡΡ‚Π°Ρ‚ΡŒΡ:
О Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ синтаксиса рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ drag-n-drop Π² RxJS:

/DM*U/.exec(
mouseDown$,
mouseMove$,
mouseUp$
)

https://dev.to/kosich/regexp-for-reactive-streams-143g

#костины_истории
β ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ сСгодня Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ…: композиция Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°Π²Ρ‚ΠΎ-ΠΊΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Function Composition) - соСдинСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для формирования Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ пСрСдаСтся Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈ это выглядит Ρ‚Π°ΠΊ:


F(x) = g(f(y))

Π’ ΠΊΠΎΠ΄Π΅ Ρ‚Π°ΠΊ:


const compose = (f, g) => (a) => f(g(a)) // Definition
const floorAndToString = compose((val) => val.toString(), Math.floor) // Usage
floorAndToString(121.212121) // '121'


ΠšΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅(Curring) - конвСртация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ нСсколько входящих Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π·Π° Ρ€Π°Π·.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· вызывая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΎΠ΄Π½ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ всС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹:


const sum = (a, b) => a + b

const curriedSum = (a) => (b) => a + b

curriedSum(40)(2) // 42.

const add2 = curriedSum(2) // (b) => 2 + b

add2(10) // 12

АвтоматичСскоС ΠΊΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Auto Currying) - ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ нСсколько Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π² Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ мСньшСС количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‚ΠΎ ΠΎΠ½Π° Π²Π΅Ρ€Π½Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π’ популярном Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ ramda Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ функция curry, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ автоматичСскоС ΠΊΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.


const add = (x, y) => x + y

const curriedAdd = _.curry(add)
curriedAdd(1, 2) // 3
curriedAdd(1) // (y) => 1 + y
curriedAdd(1)(2) // 3


БСгодня Π² ссылкС ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄Π΅ΠΎ курс ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.


#Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅_ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅