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.