Приправление карри преобразовывает единственную функцию 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
Мы нашли решение проблемы. Я заменил следующую строку
$this->_helper->viewRenderer->setNoRender();
на
$this->_helper->viewRenderer->setNeverRender();
. Если используется setNeverRender (), представления не отображаются (ни из плагина).
public function getCsv($tableName, $fileName)
{
$content = new $tableName();
$content_arr = array();
$content_arr = $content->fetchAll('1=1','id ASC');
$csv_terminated = "\n";
$csv_separator = ",";
$csv_enclosed = '"';
$csv_escaped = "\\";
$schema_insert = "";
$l = $csv_enclosed . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed,
stripslashes("Email Address")) . $csv_enclosed;
$schema_insert .= $l;
$schema_insert .= $csv_separator;
$l = $csv_enclosed . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed,
stripslashes("Add Date")) . $csv_enclosed;
$schema_insert .= $l;
$schema_insert .= $csv_separator;
$out = trim(substr($schema_insert, 0, -1));
$out .= $csv_terminated;
if(count($content_arr) > 0)
{
foreach($content_arr as $content)
{
$schema_insert = '';
if ($content->email != '' || $content->add_date != '')
{
$schema_insert .= $csv_enclosed .
str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $content->email) . $csv_enclosed;
$schema_insert .= $csv_separator;
$schema_insert .= $csv_enclosed .
str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $content->add_date) . $csv_enclosed;
$schema_insert .= $csv_separator;
}
$schema_insert .= $csv_separator;
$out .= $schema_insert;
$out .= $csv_terminated;
}
}
return $out;
}`