Курс по Raku / Приложение 🆕 / Поток и функции / Подпрограми и функционален стил / Exercises / Композирайте две функции

Решение: Композирайте две функции

Ето едно възможно решение на задачата.

Код

sub compose(&f, &g) {
    return -> $x { f(g($x)) };
}

my $combined = compose(* * 2, * + 1);

say $combined(5);

🦋 Намерете програмата във файла compose.raku.

Изход

12

Коментари

  1. Параметрите &f и &g приемат всичко извикваемо — тук функциите с Whatever * * 2 и * + 1.

  2. compose връща нова анонимна функция -> $x { f(g($x)) }. Извикването ѝ с 5 първо изпълнява g (5 + 1), после f (6 * 2), което дава 12.

Навигация в курса

Композирайте две функции   |   Натрупвател на стойности