Вы говорите LINQ с объектами или LINQ to SQL?
Для LINQ для объектов вам придется прибегать к регулярным выражениям , которые я думаю.
Приправление карри преобразовывает единственную функцию 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
Интересный вопрос. После небольшого количества поиска "Частичное Функциональное Приложение не приправляет карри" , дал лучшее объяснение, которое я нашел. Я не могу сказать, что практичный различие особенно очевидно для меня, но тогда я не эксперт по FP...
Другая полезно выглядящая страница (который я признаюсь, что еще не полностью читал) "Приправляющее карри и Частичное Приложение с Закрытиями Java" .
действительно похоже, что это - широко перепутанная пара терминов, заметьте.