Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Функциональное программирование / Функции высшего порядка / Передача подпрограмм
Тест — Передача подпрограмм
Что выведет следующая программа?
sub negate($n) { -$n }
sub apply(&f, $x) {
f($x);
}
say apply(&negate, 7);| 1 | -7 |
| 0 | 7 |
| 0 | 0 |
| 0 | &negate |
Именованная подпрограмма передаётся с сигилом &,
поэтому &negate отдаёт в apply саму
подпрограмму, а не вызывает её. Внутри f(7) её выполняет,
что даёт -7.