Курс языка программирования Raku / Приложение 🆕 / Порядок выполнения и функции / Подпрограммы и функциональный стиль / Exercises / Композиция двух функций
Решение: Композиция двух функций
Вот один из возможных вариантов решения задачи.
Код
sub compose(&f, &g) {
return -> $x { f(g($x)) };
}
my $combined = compose(* * 2, * + 1);
say $combined(5);🦋 Исходный код можно найти в файле compose.raku.
Вывод
12Комментарии
Параметры
&fи&gпринимают любые вызываемые объекты — здесь это функции с Whatever* * 2и* + 1.composeвозвращает новую анонимную функцию-> $x { f(g($x)) }. Её вызов на5сперва выполняетg(5 + 1), затемf(6 * 2), давая12.