Thunk и функция карри одинаковы? - PullRequest
0 голосов
/ 04 мая 2020

Когда я изучаю Thunk, я думаю, что они как функция карри. Почему это называется Thunk?

Thunk

function add(x, y){
  return x + y
}

function thunk() {
  return add(10, 20)
} 

Функция карри

function multiply(a, b, c) {
    return a * b * c;
}

function multiply(a) {
    return (b) => {
        return (c) => {
            return a * b * c
        }
    }
}

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Нет, они совершенно разные.

Однако, и thunks, и currying имеют приложения в functional programming.

Thunks

Thunks - это functional programming техника, используемая для задержки вычислений.

Это очень помогает нам в контексте redux.

Итак, что мы делаем, когда мы хотим отложить вычисления, когда мы dispatch делаем действие? Мы используем thunks в качестве промежуточного программного обеспечения.

Это очень просто

export default function thunkMiddleware({ dispatch, getState }) {
  return next => action =>
    typeof action === 'function' ?
      action(dispatch, getState) :
      next(action);
} 

Это в значительной степени реализация thunks в redux-thunk.

В основном он просто проверяет, является ли действие dispatched функция, если не она просто передает ее как есть.

Вы можете прочитать реализацию ядра здесь . Это всего 14 строк.

Curry

Curring - это преобразование одной функции из n аргументов в n функций с одним аргументом в каждой.

Так, например, если у нас есть функция, которая принимает три параметра a, b & c

let result = fn(a,b,c)

Когда мы применяем к ней карри, она становится

let applyCurrying = curriedFn(fn);
let result = applyCurrying(a)(b)(c);

Тривиальной реализацией curriedFn:

const curriedFn = a => b => c => ( do compuation with a,b,c );

При каррировании каждая функция принимает ровно один параметр.

0 голосов
/ 04 мая 2020

Нет, они совсем другие. Оба могут быть функциями, но это все. thunk не принимает никаких параметров, так что вы можете просто оценить его (и оценка его в выбранной вами точке - это целая цель), в то время как функция curry полностью посвящена параметрам и их представление.

...