Краткий ответ: нет. В функциональном программировании вы, как правило, никогда не модифицируете переменные, что означает невозможность цикла. Вместо этого вы можете реализовать то же самое с помощью рекурсии. Точно так же, поскольку у вас, вообще говоря, нет побочных эффектов, вызовы функций имеют смысл, только если они возвращают данные. Таким образом, бар (материал), вероятно, не очень полезен. Это никак не влияет на остальную часть приложения. В стиле функционального программирования ваша функция bar () должна каждый раз вызываться для разных данных и возвращать то, на что может воздействовать остальная часть приложения.
(ML допускает побочные эффекты в некоторых случаях, но для простоты давайте пока проигнорируем это)
Чего именно вы пытаетесь достичь? (Что нужно зациклить, что делают функции?
Если вы предоставите немного больше подробностей, мы можем более конкретно объяснить, как вы должны написать программу. Но в действительности ваша программа просто не имеет смысла в функциональном стиле.