Курс по 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.