Что такое partial application?

Ответ

Частичное применение - фиксация части аргументов функции:

function logger(string $level, string $context, string $msg): void {
    echo "[$level][$context] $msg\n";
}

// Частичное применение через замыкание
$errorLogger = fn(string $msg) => logger('ERROR', 'app', $msg);
$errorLogger('Something failed');

// Или более гибко
function partial(callable $fn, ...$partial): Closure {
    return fn(...$args) => $fn(...$partial, ...$args);
}

$dbLogger = partial('logger', 'INFO', 'database');
$dbLogger('Query executed');

Разница с каррированием: partial application фиксирует любое количество аргументов за раз, currying - строго по одному.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.