В чем разница между карри и частичным применением?

Вы говорите LINQ с объектами или LINQ to SQL?

Для LINQ для объектов вам придется прибегать к регулярным выражениям , которые я думаю.

401
задан ArtB 27 February 2017 в 20:39
поделиться

2 ответа

Приправление карри преобразовывает единственную функцию n аргументы в функции n с отдельным аргументом каждый. Учитывая следующую функцию:

function f(x,y,z) { z(x(y));}

, Когда приправлено карри, становится:

function f(x) { lambda(y) { lambda(z) { z(x(y)); } } }

для получения полного приложения f (x, y, z), необходимо сделать это:

f(x)(y)(z);

Много функциональных языков позволяют Вам записать f x y z. Если Вы только звоните f x y или f (x) (y) тогда, Вы добираетесь, частично примененный function— возвращаемое значение является закрытием lambda(z){z(x(y))} с переданным - в значениях X и Y к f(x,y).

Один способ использовать частичное приложение состоит в том, чтобы определить функции как частичные приложения обобщенных функций, как [1 116] сгиб :

function fold(combineFunction, accumulator, list) {/* ... */}
function sum     = curry(fold)(lambda(accum,e){e+accum}))(0);
function length  = curry(fold)(lambda(accum,_){1+accum})(empty-list);
function reverse = curry(fold)(lambda(accum,e){concat(e,accum)})(empty-list);

/* ... */
@list = [1, 2, 3, 4]
sum(list) //returns 10
@f = fold(lambda(accum,e){e+accum}) //f = lambda(accumulator,list) {/*...*/}
f(0,list) //returns 10
@g = f(0) //same as sum
g(list)  //returns 10
233
ответ дан Chris Charabaruk 27 February 2017 в 20:39
поделиться
  • 1
    привет, могли Вы быть более характерными чтобы для как к " bind" пружина для принятия myMessages.properties по сравнению с его собственным message.properties? – Salvin Francis 29 October 2009 в 10:38

Интересный вопрос. После небольшого количества поиска "Частичное Функциональное Приложение не приправляет карри" , дал лучшее объяснение, которое я нашел. Я не могу сказать, что практичный различие особенно очевидно для меня, но тогда я не эксперт по FP...

Другая полезно выглядящая страница (который я признаюсь, что еще не полностью читал) "Приправляющее карри и Частичное Приложение с Закрытиями Java" .

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

29
ответ дан Jon Skeet 27 February 2017 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: