Публикации по теме 'partial-application'


Чем каррирование отличается от частичного применения в функциональном программировании?
Понимание этих двух концепций функционального программирования за 10 минут. Каррирование и частичное применение — это связанные концепции функционального программирования, которые имеют дело с преобразованием функции с несколькими аргументами в последовательность функций с меньшим количеством аргументов. Фреймворки JavaScript, использующие каррирование и частичное применение: Согласно моим исследованиям, эти два метода стали широко использоваться и часто реализуются в современных..

Частичные приложения в JavaScript
Частичные приложения в JavaScript С появлением библиотеки JavaScript Redux, синтаксиса и цепочки инструментов Reason, а также библиотеки Cycle функциональное программирование становится все более актуальным в JavaScript. Функциональное программирование просто описывает программы, которые создаются путем применения и составления функций. Важной концепцией, уходящей своими корнями в функциональное программирование, является частичное применение , когда значения фиксируются для..

Частичное приложение на JavaScript для упрощения модульных тестов (возможно…)
Модульное тестирование может быть сложным, если вы не планируете его, поскольку вы работаете над функцией. Существует множество стратегий и библиотек, которые помогут вам имитировать зависимости от ваших функций/кода, а также множество по-настоящему умных шаблонов, которые можно применять постфактум. Что мне действительно понравилось в JavaScript, так это частичное приложение… передача значений в функцию и возвращение функции, которая имеет доступ к этим значениям через замыкание. Это..

Вопросы по теме 'partial-application'

Связыватели аргументов Python
Как я могу привязать аргументы к методу Python, чтобы сохранить нулевой функтор для последующего вызова? Подобно boost::bind в C++. Например: def add(x, y): return x + y add_5 = magic_function(add, 5) assert add_5(3) == 8
28162 просмотров
schedule 19.06.2022

Частично примененные рекурсивные функции
def mainCaller() = { val name = "xyz" someList.foreach { u:Map => foo(name, u) } } def foo(name:String)(map:Map): Unit = { //match case.... //recursive call to foo in each case where name remains same, but map changes } как я могу...
325 просмотров
schedule 17.06.2023

Получить аргументы из частично примененной функции в scala
Есть ли способ в scala вернуть аргументы из уже частично примененной функции? Имеет ли это вообще смысл, должно ли это быть сделано или вписывается в любой вариант использования? пример: def doStuff(lower:Int,upper:Int,b:String)= for(turn...
665 просмотров
schedule 10.10.2022

кто-нибудь знает, как использовать частично примененный инфикс функции с тремя аргументами (haskell)
Я хочу применить функцию с тремя аргументами по-разному в зависимости от логического значения (одного из аргументов). Я хотел бы иметь возможность применять его инфиксным образом, чтобы я мог связать его (пример ниже). что-то вроде следующего, но...
946 просмотров

Как частично применить функции-члены в JavaScript?
В настоящее время у меня есть функция частичного приложения, которая выглядит так: Function.prototype.curry = function() { var args = []; for(var i = 0; i < arguments.length; ++i) args.push(arguments[i]); return function()...
154 просмотров

В чем разница между несколькими списками параметров и несколькими параметрами в списке в Scala?
В Scala можно писать такие (каррированные?) Функции, как это def curriedFunc(arg1: Int) (arg2: String) = { ... } В чем разница между указанным выше определением функции curriedFunc с двумя списками параметров и функциями с несколькими...
8818 просмотров
schedule 21.07.2022

Почему scala не может вывести тип в частичном методе?
См. этот пример: def hello(a:String, b:String) = println(a + ":" + b) val m1 = hello("aaa", _ ) m1("bbb") Его нельзя скомпилировать, мне нужно добавить тип в разделяемый метод: val m1 = hello("aaa", _: String) Почему scala не знает,...
786 просмотров
schedule 18.03.2023

Заменить параметр в лямбда-выражении
Учитывая этот код: public class Foo { public int a { get; set; } public int b { get; set; } } private void Test() { List<Foo> foos = new List<Foo>(); foos.Add(new Foo()); foos.Add(new Foo());...
12705 просмотров

В Haskell (+) — это функция, ((+) 2) — это функция, ((+) 2 3) — это 5. Что именно там происходит?
Как это возможно, что там происходит? Есть ли для этого название? Какие другие языки имеют такое же поведение? Любой без сильной системы набора текста?
2540 просмотров

Частичное приложение Clojure — как заставить «карту» возвращать набор функций?
У меня есть функция, которую я в основном выдернул из обсуждения в группе Clojure google, которая берет коллекцию и список функций произвольной длины и фильтрует ее, чтобы вернуть новую коллекцию, содержащую все элементы исходного списка, для которых...
600 просмотров

Понимание реализации частичного применения Джона Резига
Следующий код взят из книги Джона Резига Secrets of JavaScript Ninja , чтобы объяснить, как использовать замыкания для реализации частичного применение функций. Однако у меня есть проблемы с пониманием назначения переменной arg . Зачем это нужно...
190 просмотров

Есть ли причина, по которой «это» аннулируется в методе «карри» Крокфорда?
В книге Дугласа Крокфорда «Javascript: The Good Parts» он предоставляет код для метода curry , который принимает функцию и аргументы и возвращает эту функцию с уже добавленными аргументами (очевидно, на самом деле это не что означает "карри" , но...
1110 просмотров
schedule 27.02.2023

В чем разница между монадой чтения и частичной функцией в Clojure?
Леонардо Борхес собрал фантастическая презентация о монадах в Clojure. В нем он описывает монаду читателя в Clojure, используя следующий код : ;; Reader Monad (def reader-m {:return (fn [a] (fn [_] a)) :bind (fn [m k]...
581 просмотров

Как отобразить функцию в Common Lisp?
Я сделал эту функцию в Common Lisp (defun f (&key n p x) (* (combinacion n x) (expt p x) (expt (- 1 p) (- n x)))) и это работает нормально. Дело в том, что я хочу сделать в Common Lisp lake следующую функцию Haskell ff n p x =...
715 просмотров

Почему встроенная функция применяется к слишком малому количеству аргументов, которые считаются нормальной формой слабой головы?
В определении Haskell говорится: Выражение находится в слабой нормальной форме головы (WHNF), если оно: конструктор (в конечном итоге применяемый к аргументам), например True, Just (квадрат 42) или (:) 1 встроенная функция,...
1089 просмотров

Конфиденциальность в JavaScript
Область действия функций обеспечивает единственную конфиденциальность в JavaScript. Итак, канонично: function Ctor(dep1, dep2) { this._dep1 = dep1; this._dep2 = dep2; } Ctor.prototype.foo = function() { // use this._dep1/2... } ......
157 просмотров
schedule 15.08.2022

Каковы преимущества std::bind, разрешающего и отбрасывающего дополнительные аргументы?
Рассмотрим этот код, #include <iostream> #include <functional> void pacifist() { std::cout << "I don't get involved in arguments. I'm a pacifist.\n"; } int main() { auto x = std::bind(pacifist); x();...
126 просмотров
schedule 16.09.2022

kind-projector возвращает странные результаты
У меня есть следующие типы: SomeTypeClass Тип более высокого порядка, который имеет один параметр типа вида * => * => * trait SomeTypeClass[P[_, _]] { def test[F[_], S, T, A, B](f: (A => F[B]) => S => F[T])...
119 просмотров