Haskell - Mais sobre funções

Até agora, discutimos muitos tipos de funções Haskell e usamos diferentes maneiras de chamar essas funções. Neste capítulo, aprenderemos sobre algumas funções básicas que podem ser facilmente usadas em Haskell sem importar nenhuma classe especial de tipo. A maioria dessas funções faz parte de outras funções de ordem superior.

Função Principal

Headfunção funciona em uma lista. Ele retorna o primeiro argumento de entrada que é basicamente uma lista. No exemplo a seguir, estamos passando uma lista com 10 valores e estamos gerando o primeiro elemento dessa lista usando ohead função.

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

Ele produzirá a seguinte saída -

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

Função Tail

Tail é a função que complementa o headfunção. Leva umlistcomo entrada e produz a lista inteira sem a parte principal. Isso significa que otailfunção retorna a lista inteira sem o primeiro elemento. Dê uma olhada no seguinte exemplo -

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

Ele produzirá a seguinte saída -

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 Função

Como o nome sugere, ele produz o último elemento da lista que é fornecido como entrada. Verifique o seguinte exemplo.

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

Ele produzirá a seguinte saída -

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

Função Init

Init funciona exatamente como o oposto de tailfunção. Ele recebe uma lista como argumento e retorna a lista inteira sem a última entrada.

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

Agora, observe sua saída -

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]

Função Nula

Null é uma função de verificação booleana que funciona em uma string e retorna True apenas quando a lista fornecida está vazia, caso contrário, ele retorna False. O código a seguir verifica se a lista fornecida está vazia ou não.

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

Ele produzirá a seguinte saída -

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

Função reversa

Ele funciona em uma entrada String e converte toda a entrada em ordem reversa e dá uma saída como resultado. Abaixo está a base de código para esta função.

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

Ele produzirá a seguinte saída -

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]

Função Comprimento

Esta função é usada para calcular o comprimento do listdado como um argumento. Dê uma olhada no seguinte exemplo -

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

Temos 10 elementos em nossa lista, portanto, nosso código produzirá 10 como saída.

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

Função

Takefunção é usada para criar uma sub-string de outra String. O código a seguir mostra como você pode usar a função take em Haskell -

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

O código gera uma string contendo 5 elementos da lista fornecida -

[1,2,3,4,5]

Função de queda

Esta função também é usada para gerar uma string secundária. Funciona como o oposto dotakefunção. Observe o seguinte trecho de código -

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

O código remove os primeiros 5 elementos da lista fornecida e imprime os 5 elementos restantes. Ele produzirá a seguinte saída -

[6,7,8,9,10]

Função Máxima

Esta função é usada para encontrar o elemento com o valor máximo da lista fornecida. Vamos ver como usá-lo na prática -

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

O trecho de código acima irá gerar a seguinte saída -

The maximum value element of the list is:
1245

Função Mínima

Esta função é usada para encontrar o elemento com o valor mínimo da lista fornecida. É exatamente o oposto domaximum função.

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

A saída do código acima é -

The minimum value element of the list is:
1

Função Soma

Como o nome sugere, esta função retorna a soma de todos os elementos presentes na lista fornecida. O código a seguir pega uma lista de 5 elementos e retorna sua soma como saída.

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

Ele produzirá a seguinte saída -

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

Função do Produto

Você pode usar esta função para multiplicar todos os elementos em uma lista e imprimir seu valor.

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

Nosso código produzirá a seguinte saída -

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

Função Elem

Esta função é usada para verificar se a lista fornecida contém um elemento específico ou não. Assim, ele retorna umtrue ou um false.

O código a seguir verifica se a lista de elementos fornecida contém o 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))

Ele produzirá a seguinte saída -

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

Use o mesmo código para verificar se a lista fornecida contém o valor 1785 ou não.