Olmo - Bucle
Elm es un lenguaje de programación funcional. Elm utiliza el concepto de recursividad como una alternativa a las construcciones de bucle tradicionales.
Este capítulo analiza el concepto de recursividad.
Recursividad
Algunos lenguajes de programación de computadoras permiten que un módulo o función se llame a sí mismo. Esta técnica se conoce como recursividad.
Ilustración
En este programa, veremos cómo usar la recursividad para mostrar hola cinco veces.
Step 1 − Create a file Loop.elm
Crear un bucle de módulo y definir una función sayHello. La función sayHello toma un valor entero como entrada y devuelve un valor de cadena.
module Loop exposing(..)
//function signature
sayHello:Int ->String
//function implementation
sayHello n =
case n of
1 -> "Hello:1 "
_ -> "Hello:" ++ toString (n) ++ " " ++ sayHello(n-1)
La función sayHello comprueba si el parámetro pasado es 1. Si el parámetro es 1, la función regresará, de lo contrario creará una cadena Hello y llamará a la misma función.
Step 2 − Invoke sayHello from REPL
Abra el elm REPL de la carpeta del proyecto actual (ubicación del archivo 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
>
Ilustración
El siguiente ejemplo imprime la suma de n números utilizando la recursividad.
> sumOfNos n =\
| if n==0 then 0 \
| else (n) + sumOfNos (n-1)
<function> : number -> number1
En elm REPL, creamos una función sumOfNos que toma un número de entrada y suma todos los números de 0 a ese número.
Por ejemplo, si pasamos la entrada como 5, sumará 1 + 2 + 3 + 4 + 5, que es 15 .
> ssumOfNos 5
15 : number
La salida del programa se muestra arriba.