Haskell - Más sobre funciones

Hasta ahora, hemos discutido muchos tipos de funciones de Haskell y hemos usado diferentes formas de llamar a esas funciones. En este capítulo, aprenderemos sobre algunas funciones básicas que se pueden usar fácilmente en Haskell sin importar ninguna clase de tipo especial. La mayoría de estas funciones son parte de otras funciones de orden superior.

Función de cabeza

HeadLa función funciona en una lista. Devuelve el primero del argumento de entrada que es básicamente una lista. En el siguiente ejemplo, estamos pasando una lista con 10 valores y estamos generando el primer elemento de esa lista usando elhead función.

main = do 
   let x = [1..10]   
   putStrLn "Our list is:"  
   print (x) 
   putStrLn "The first element of the list is:" 
   print (head x)

Producirá la siguiente salida:

Our list is: 
[1,2,3,4,5,6,7,8,9,10]
The first element of the list is:
1

Función de cola

Tail es la función que complementa la headfunción. Toma unlistcomo entrada y produce la lista completa sin la parte principal. Eso significa que eltailLa función devuelve la lista completa sin el primer elemento. Eche un vistazo al siguiente ejemplo:

main = do 
   let x = [1..10]   
   putStrLn "Our list is:"  
   print (x) 
   putStrLn "The tail of our list is:" 
   print (tail x)

Producirá la siguiente salida:

Our list is:
[1,2,3,4,5,6,7,8,9,10]
The tail of our list is:
[2,3,4,5,6,7,8,9,10]

Última función

Como sugiere el nombre, produce el último elemento de la lista que se proporciona como entrada. Mira el siguiente ejemplo.

main = do 
   let x = [1..10]   
   putStrLn "Our list is:"  
   print (x) 
   putStrLn "The last element of our list is:" 
   print (last x)

Producirá la siguiente salida:

Our list is:
[1,2,3,4,5,6,7,8,9,10]
The last element of our list is:
10

Función de inicio

Init funciona exactamente como lo contrario de tailfunción. Toma una lista como argumento y devuelve la lista completa sin la última entrada.

main = do 
   let x = [1..10]   
   putStrLn "Our list is:"  
   print (x) 
   putStrLn "Our list without the last entry:"  
   print (init x)

Ahora, observe su salida:

Our list is:
[1,2,3,4,5,6,7,8,9,10]
Our list without the last entry:
[1,2,3,4,5,6,7,8,9]

Función nula

Null es una función de verificación booleana que funciona en una cadena y devuelve True solo cuando la lista dada está vacía, de lo contrario regresa False. El siguiente código comprueba si la lista proporcionada está vacía o no.

main = do 
   let x = [1..10]   
   putStrLn "Our list is:"  
   print (x) 
   putStrLn "Is our list empty?"  
   print (null x)

Producirá la siguiente salida:

Our list is:
[1,2,3,4,5,6,7,8,9,10]
Is our list empty?
False

Función inversa

Funciona en una entrada de cadena y convierte toda la entrada en orden inverso y da una salida como resultado. A continuación se muestra el código base para esta función.

main = do 
   let x = [1..10]  
   putStrLn "Our list is:" 
   print (x) 
   putStrLn "The list in Reverse Order is:" 
   print (reverse x)

Producirá la siguiente salida:

Our list is:
[1,2,3,4,5,6,7,8,9,10]
The list in Reverse Order is:
[10,9,8,7,6,5,4,3,2,1]

Función de longitud

Esta función se utiliza para calcular la longitud del listdado como argumento. Eche un vistazo al siguiente ejemplo:

main = do 
   let x = [1..10]   
   putStrLn "Our list is:" 
   print (x) 
   putStrLn "The length of this list is:" 
   print (length x)

Tenemos 10 elementos en nuestra lista, por lo tanto, nuestro código producirá 10 como resultado.

Our list is:
[1,2,3,4,5,6,7,8,9,10]
The length of this list is:
10

Tomar función

TakeLa función se usa para crear una subcadena a partir de otra Cadena. El siguiente código muestra cómo puede usar la función de toma en Haskell:

main = print(take 5 ([1 .. 10]))

El código genera una subcadena que contiene 5 elementos de la lista proporcionada:

[1,2,3,4,5]

Función de caída

Esta función también se usa para generar una subcadena. Funciona como lo opuesto altakefunción. Mira el siguiente fragmento de código:

main = print(drop 5 ([1 .. 10]))

El código elimina los primeros 5 elementos de la lista proporcionada e imprime los 5 elementos restantes. Producirá la siguiente salida:

[6,7,8,9,10]

Función máxima

Esta función se utiliza para encontrar el elemento con el valor máximo de la lista proporcionada. Veamos cómo usarlo en la práctica.

main = do 
   let x = [1,45,565,1245,02,2]   
   putStrLn "The maximum value element of the list is:"  
   print (maximum x)

La pieza de código anterior generará la siguiente salida:

The maximum value element of the list is:
1245

Función mínima

Esta función se utiliza para encontrar el elemento con el valor mínimo de la lista proporcionada. Es todo lo contrario demaximum función.

main = do 
   let x = [1,45,565,1245,02,2]   
   putStrLn "The minimum value element of the list is:"  
   print (minimum x)

La salida del código anterior es:

The minimum value element of the list is:
1

Función suma

Como sugiere el nombre, esta función devuelve la suma de todos los elementos presentes en la lista proporcionada. El siguiente código toma una lista de 5 elementos y devuelve su suma como resultado.

main = do 
   let x = [1..5] 
   putStrLn "Our list is:" 
   print (x) 
   putStrLn "The summation of the list elements is:" 
   print (sum x)

Producirá la siguiente salida:

Our list is:
[1,2,3,4,5]
The summation of the list elements is:
15

Función del producto

Puede utilizar esta función para multiplicar todos los elementos de una lista e imprimir su valor.

main = do 
   let x = [1..5] 
   putStrLn "Our list is:" 
   print (x) 
   putStrLn "The multiplication of the list elements is:" 
   print (product x)

Nuestro código producirá el siguiente resultado:

Our list is:
[1,2,3,4,5]
The multiplication of the list elements is: 
120

Función Elem

Esta función se utiliza para comprobar si la lista proporcionada contiene un elemento específico o no. En consecuencia, devuelve untrue o un false.

El siguiente código comprueba si la lista de elementos proporcionada contiene el valor 786.

main = do 
   let x = [1,45,155,1785] 
   putStrLn "Our list is:" 
   print (x) 
   putStrLn "Does it contain 786?" 
   print (elem 786 (x))

Producirá la siguiente salida:

Our list is:
[1,45,155,1785]
Does it contain 786?
False

Utilice el mismo código para comprobar si la lista proporcionada contiene el valor 1785 o no.