πŸ€•
pdp
  • Hello world!
  • Base IT Knowledge
    • OOP
      • GRASP
      • SOLID
    • FP
    • Data structures
  • ENGX
    • Design patterns
    • Release Strategy
      • Branching strategies
        • Trunk-Based Development
    • Clean code
      • Authoring/Naming
      • Code smells
      • Refactoring basis
  • Development processes
    • Waterfall
    • Agile
    • Scrum
  • Other
    • React
    • a11y
Powered by GitBook
On this page
  • HOF - High ordered function
  • Partial application (ЧастичноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅)
  • Composition
  • Curry
  • Clear functions
  • Memoize
  • Clojure
  • Links

Was this helpful?

  1. Base IT Knowledge

FP

PreviousSOLIDNextData structures

Last updated 5 years ago

Was this helpful?

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°ΜΠ»ΡŒΠ½ΠΎΠ΅ программи́рованиС β€” Ρ€Π°Π·Π΄Π΅Π» ΠΈ , Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ процСсс трактуСтся ΠΊΠ°ΠΊ вычислСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² матСматичСском ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ послСдних (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² ).

ΠŸΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ΡΡ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅ , которая описываСт процСсс вычислСний ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ (Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΌΡƒ Π² ). ΠŸΡ€ΠΈ нСобходимости, Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ вся ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… состояний Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ процСсса прСдставляСтся явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ .

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ вычислСниСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΡ‚ исходных Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ явного хранСния состояния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. БоотвСтствСнно, Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΠΎΠ½ΠΎ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ этого состояния (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ , Π³Π΄Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ являСтся , хранящая своё Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ выполнСния ).

HOF - High ordered function

In and , a higher-order function is a that does at least one of the following:

  • takes one or more functions as arguments (i.e. ),

  • returns a function as its result.

const hof = (a) => (b) => a + b;
const repeat = (n, action) => {
  for (let i = 0; i < n; i++) {
    action(i);
  }
}

repeat(3, console.log);

Partial application (ЧастичноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅)

Is a technique of fixing a number of arguments to a function, producing another function of smaller arguments i.e binding values to one or more of those arguments as the chain of function progressed.

JavaScript has the built-in method .bindthat works on functions with any number of arguments and can bind an arbitrary amount of parameters. Its invocation has the following syntax.

function.bind(context, [arg1], [arg2], ...)

It turns function into a new function whose implicit this parameter is this value and whose initial arguments are always as given.

function addition(x, y) {
   return x + y;
}

const plus5 = addition.bind(null, 5)

plus5(10) // output -> 15
//es6 pure partial
const partial = (fn, ...args) => (...rest) => fn(...args, ...rest) 

Composition

const compose = (f1, f2) => value => f1( f2(value))
const number = compose(Math.round, parseFloat);

number('72.5') // 73

Curry

A curried function is a function that takes multiple arguments one at a time.

Curried functions on the other hand always return a unary function: a function which takes one argument.

All curried functions return partial applications, but not all partial applications are the result of curried functions.

The unary requirement for curried functions is an important feature.

// add = a => b => Number
const add = a => b => a + b;

const result = add(2)(3); // => 5

Clear functions

Memoize

Clojure

Links

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΜΡ†ΠΈΡ фу́нкций (ΠΈΠ»ΠΈ супСрпози́ция фу́нкций) β€” это ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

дискрСтной ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ
ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° программирования
вычислСния
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ
ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ программирования
состояний
Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ²
список
ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ
пСрСмСнная
Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°
mathematics
computer science
function
procedural parameters
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
https://www.youtube.com/watch?v=BT7KnY6a_24
ΠšΡƒΡ€Ρ Β«JS: Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β»: ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½, 9 ΡƒΡ€ΠΎΠΊΠΎΠ²Π₯СкслСт
Logo