Описание тега partial-application

Частичное приложение - это метод программирования, при котором в функцию передается меньше, чем полное число аргументов, чтобы получить новую функцию, которую можно использовать позже. Это особенно часто встречается в функциональных языках, поддерживающих каррирование.
1 ответ

Упорядоченное уменьшение для нескольких функций в Python

Упорядоченный список сокращения Мне нужно сократить некоторые списки, в которых, в зависимости от типов элементов, скорость и реализация двоичной операции различаются, то есть можно добиться значительного снижения скорости, уменьшив сначала нескольк…
2 ответа

Композиция функций - Haskell

Опять же, еще один вопрос, вызванный моими попытками ответить на вопросы проекта Эйлера ( следуйте из предыдущего вопроса). У меня проблемы с пониманием следующей строки: print (maximum (map (product . take 13) (tails number))) конкретно map (produc…
2 ответа

Конфиденциальность в JavaScript

Функция scoping предлагает единственную конфиденциальность в JavaScript. Итак, каноническое: function Ctor(dep1, dep2) { this._dep1 = dep1; this._dep2 = dep2; } Ctor.prototype.foo = function() { // use this._dep1/2... } ... проблематично в том, что …
15 июн '16 в 12:44
1 ответ

Для оптимизированного карри необходим стиль без точек

Скажем, у нас есть (надуманная) функция, например: import Data.List (sort) contrived :: Ord a => [a] -> [a] -> [a] contrived a b = (sort a) ++ b И мы частично применяем его для использования в других местах, например: map (contrived [3,2,1]…
0 ответов

Частичное приложение для списка функций

Как вы частично применяете список функций? Следующий минимальный пример: def myprint (a, b): выведите 'a: '+str(a)+', b: '+str(b) l1=[лямбда x: myprint ('x', x), лямбда y:myprint('y',y)] l2=[] для f в l1: l2.append(лямбда: F () '!') для г в l2: г() …
05 окт '15 в 09:54
6 ответов

Частичное применение функций и карри, как сделать лучший код вместо большого количества карт?

Я новичок в Haskell, и я пытаюсь понять это. У меня возникла следующая проблема: У меня есть функция, которая получает 5 параметров, скажем, f x y w z a = x - y - w - z - a И я хотел бы применить его, только меняя переменную x от 1 в 10 в то время к…
3 ответа

Является ли "a -> b -> (a -> b -> c) -> c" для применения двух параметров стандартной функциональной концепцией?

Наткнулся на необходимость функции с подписью 'a -> 'b -> ('a -> 'b -> 'c) -> 'c использовать для применения двух аргументов при конвейере: let apply2 x y f = f x y Мне это нужно, потому что я использую функцию myFun : MyType -> Ty…
3 ответа

Не могу понять результат вызова функции высокого порядка, предоставленной с частично не примененной функцией в качестве аргумента

У меня есть объявление функции высокого порядка, чтобы применить функцию, заданную в качестве аргумента дважды: twice :: (a -> a) -> a -> a twice f x = f (f x) Беспорядок прибывает из этой сессии GHCi: *Main> let _4 = twice twice *Main&g…
1 ответ

Унифицированный интерфейс между функциями с разным количеством аргументов

У меня есть две функции, подобные этим: foo :: a -> b -> x -> x bar :: c -> y -> y Я хотел бы объединить их в единый интерфейс, чтобы они оба могли иметь одинаковое имя. В моем случае это гарантировано, что типы x а также y разные (но…
3 ответа

Как можно пойти карри?

В функциональном программировании любит Haskell, я могу определить функцию add a b = a+b затем add 3 вернет функцию, которая принимает один параметр и вернет 3 + something Как я могу сделать это в GO? Когда я определяю функцию, которая принимает бол…
2 ответа

Python: Могу ли я частично применить приёмник с помощью инициализатора?

initializer приходит после iterable, Это вызывает проблемы для частичного применения. Рассмотрим эти (тривиальные) примеры: In [1]: from functools import reduce, partial In [2]: f = partial(reduce, lambda a,b: a+b, 100) In [3]: f([1,2,3]) ----------…
2 ответа

functools.partial хочет использовать позиционный аргумент в качестве ключевого аргумента

Поэтому я пытаюсь понять partial: import functools def f(x,y) : print x+y g0 = functools.partial( f, 3 ) g0(1) 4 # Works as expected В: g1 = functools.partial( f, y=3 ) g1(1) 4 # Works as expected В: g2 = functools.partial( f, x=3 ) g2(1) TypeError:…
15 июл '14 в 10:10
1 ответ

Как я могу выразить частичное применение функции в Typescript 3.x безопасным для типов способом?

Я работаю над кодовой базой Angular, которая выполняет некоторую стандартную постобработку для большинства вызовов API. Это делается в классе обслуживания, который переносит HttpClient.get() и т.д. в методах, которые передают возвращаемое наблюдаемо…
2 ответа

Как использовать functools.partial с os.path.join?

Есть список путей + имена файлов, все начинаются с того же root_dir, Как использовать частичное? попытка from os.path import join as path_join from functools import partial from tempfile import gettempdir root_dir = gettempdir() root_join = partial(…
1 ответ

Как сделать так, чтобы скрипты Bash ссылались на локальные файлы

Моя конкретная проблема Моя цель - предоставить утилиту командной строки для преобразования файлов PowerPoint в PDF-файлы. Я пробовал решения, которые используют unoconv, но они не выполняют преобразование должным образом. Я нашел хороший рабочий п…
31 янв '19 в 18:52
1 ответ

Приложение с частичной функцией Haskell с $

Я новичок в Haskell и смотрю на простой пример использования приложения функции с $, Это кажется простым - он берет функцию и применяет ее к значению. Так что это имеет смысл: > (+3) $ 2 5 Это также имеет смысл: > ($) (+3) 2 5 Это имеет смысл,…
13 ответов

Можно ли частично применить второй аргумент функции, которая не принимает аргументов с ключевыми словами?

Возьмите для примера встроенный питон pow() функция. xs = [1,2,3,4,5,6,7,8] from functools import partial list(map(partial(pow,2),xs)) >>> [2, 4, 8, 16, 32, 128, 256] но как бы я поднял х до степени 2? получить [1, 4, 9, 16, 25, 49, 64] lis…
23 июн '12 в 22:58
1 ответ

Как автоматически передавать аргументы в LiveScript

Как я могу упростить строку 3 (свойство onChange): Input do name: \input onChange: (event, value) ~> @limitInput { type: \string }, event, value
31 мар '17 в 15:04
1 ответ

Разве карта не принимает функцию, а список возвращает список?

map2_List :: (a -> b -> c) -> [a] -> [b] -> [c] map2_List f [] _ = [] map2_List f (a:as) bs = map (f a) bs ++ map2_List f as bs Это пример из моей лекции, в котором я пытаюсь применить бинарную функцию ко всем парам элементов двух спи…
1 ответ

Аргументы типа сигнатуры статического метода и частичное применение

В последнее время я изучаю функциональное программирование и хочу донести некоторые концепции до C# Мир. Я пытаюсь составить функции для создания служб (или как бы вы их ни называли) вместо создания классов с инъекционными зависимостями. Я придумал …