πŸ‡ΊπŸ‡¦ Math.random(): javascript community
1.14K subscribers
363 photos
8 videos
530 links
Admin: @andrey_pk, @StartupEmulatorAdmin
YouTube ΠΊΠ°Π½Π°Π»: https://bit.ly/3cdY6HV
Download Telegram
⁠Брочно Π² Π½ΠΎΠΌΠ΅Ρ€! 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


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


#Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅_ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
⁠ДавайтС ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ сСгодня ΠΎ Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программиста: ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ, ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ ΠΈ бСсточСчная нотация.

Π˜Π΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ (idempotent) - функция ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π° Ссли Π΅Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Π½Π΅ мСняСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.



f(f(x)) ≍ f(x)

Math.abs(Math.abs(10))

sort(sort(sort([2, 1])))



ΠŸΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ (predicate) - функция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² зависимости ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ значСния, Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ привСсти callback Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² filter.



const predicate = (a) => a > 2

;[1, 2, 3, 4].filter(predicate) // [3, 4]



БСсточСчная нотация (Point-Free Style) - ΡΡ‚ΠΈΠ»ΡŒ написания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ явно указываСтся количСство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Вакая нотация часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для каррирования ΠΈΠ»ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка.



// Given
const map = (fn) => (list) => list.map(fn)
const add = (a) => (b) => a + b

// Then

// Not points-free - `numbers` is an explicit argument
const incrementAll = (numbers) => map(add(1))(numbers)

// Points-free - The list is an implicit argument
const incrementAll2 = map(add(1))



Ѐункция incrementAll опрСдСляСт ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ numbers, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±Π΅ΡΡ‚ΠΎΡ‡Π΅Ρ‡Π½ΡƒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ. incrementAll2 просто ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ значСния, Π½Π΅ упоминая Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Она ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±Π΅ΡΡ‚ΠΎΡ‡Π΅Ρ‡Π½ΡƒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ с бСсточСчной Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ выглядят ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ присваивания Π±Π΅Π· function ΠΈΠ»ΠΈ =>.


#Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅_ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
Π‘ΠΎΠ²Π΅Ρ‚ профСссионала:
Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Ρ€Π΅Π»ΠΈΠ·ΠΈΡ‚ΡŒ вашС ПО. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ всС Π½Π° localhost.
Π Π΅Π»ΠΈΠ·Ρ‹ приводят ΠΊ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€Π°Π·Π΄Π½ΠΈΠΊΠΈ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅, Π½ΠΎ ΠΈ Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π΄Π½ΠΈ.
ΠžΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ написанный Π½Π° javascript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² повсСднСвной ΠΆΠΈΠ·Π½ΠΈ.
Wiki для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ - Π»Π΅Π³ΠΊΠΎ с Outline.
https://github.com/outline/outline