JavaScript: карри (карри) функция
Основы JavaScript (синтаксис ES6): упражнение 46 с решением
Напишите программу на JavaScript для функции curry (карри)
Согласно wiki.haskell.org «Карринг - это процесс преобразования функции, которая принимает несколько аргументов, в функцию, которая принимает только один аргумент и возвращает другую функцию, если все еще требуются какие-либо аргументы. Однако fxy = g (x, y) форма с карри обычно более удобна, потому что допускает частичное применение.
Примечание: используйте рекурсию. Если количество предоставленных аргументов (аргументов) является достаточным, вызовите переданную функцию fn. В противном случае верните каррированную функцию fn, которая ожидает остальные аргументы. Если вы хотите вывести функцию, которая принимает переменное число аргументов (переменная функция, например, Math.min ()), вы можете при желании передать количество аргументов второму параметру arity.
Пример решения:
HTML-код:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Curry (curries) a function</title>
</head>
<body>
</body>
</html>
Код JavaScript:
//#Source https://bit.ly/2neWfJ2
const curry = (fn, arity = fn.length, ...args) =>
arity <= args.length ? fn(...args) : curry.bind(null, fn, arity, ...args);
console.log(curry(Math.pow)(2)(8));
console.log(curry(Math.min, 3)(10)(50)(2));
Пример вывода:
256 2
Блок - схема:
Демонстрация в реальном времени:
См. Pen javascript-basic-упражнение-1-46 от w3resource ( @ w3resource ) на CodePen .
Улучшите этот пример решения и опубликуйте свой код через Disqus
Предыдущий: Напишите программу на JavaScript, чтобы разбить значения на две группы. Если элемент в фильтре верен, соответствующий элемент в коллекции принадлежит первой группе; в противном случае он относится ко второй группе.
Далее: напишите программу на JavaScript для глубокого сравнения двух значений и определения их эквивалентности.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования