Вяз это функциональный язык программирования. Elm использует концепцию рекурсии как альтернативу традиционным циклическим конструкциям.
В этой главе обсуждается концепция рекурсии.
Рекурсия
Некоторые языки программирования позволяют самому себе вызывать модуль или функцию. Этот метод известен как рекурсия.
иллюстрация
В этой программе мы увидим, как использовать рекурсию для отображения hello пять раз.
Шаг 1 — Создайте файл Loop.elm
Создайте модуль Loop и определите функцию sayHello . Функция sayHello принимает целочисленное значение в качестве входных данных и возвращает строковое значение.
module Loop exposing(..) //function signature sayHello:Int ->String //function implementation sayHello n = case n of 1 -> "Hello:1 " _ -> "Hello:" ++ toString (n) ++ " " ++ sayHello(n-1)
Функция sayHello проверяет, был ли передан параметр 1. Если параметр равен 1, то функция вернется, в противном случае она создаст строку Hello и вызовет ту же функцию.
Шаг 2 — вызвать sayHello из REPL
Откройте elm REPL из текущей папки проекта (расположение файла Loop.elm).
//import the module Loop > import Loop exposing(..) //invoke the sayHello function with parameter value as 5 > sayHello 5 "Hello:5 Hello:4 Hello:3 Hello:2 Hello:1 Hello:0 " : String >
иллюстрация
В следующем примере печатается сумма из n чисел с использованием рекурсии.
> sumOfNos n =\ | if n==0 then 0 \ | else (n) + sumOfNos (n-1) <function> : number -> number1
В elm REPL мы создали функцию sumOfNos, которая принимает входное число и суммирует все числа от 0 до этого числа.
Например, если мы передадим input как 5, он будет суммировать 1 + 2 + 3 + 4 + 5, что составляет 15 .
> ssumOfNos 5 15 : number
Вывод программы показан выше.