Haskell - Altro sulle funzioni

Fino ad ora, abbiamo discusso molti tipi di funzioni Haskell e utilizzato modi diversi per chiamare tali funzioni. In questo capitolo, impareremo alcune funzioni di base che possono essere facilmente utilizzate in Haskell senza importare alcuna classe Type speciale. La maggior parte di queste funzioni fa parte di altre funzioni di ordine superiore.

Funzione testa

Headfunzione funziona su una lista. Restituisce il primo dell'argomento di input che è fondamentalmente un elenco. Nell'esempio seguente, stiamo passando una lista con 10 valori e stiamo generando il primo elemento di quella lista usando ilhead funzione.

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

Produrrà il seguente output:

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

Funzione di coda

Tail è la funzione che completa il headfunzione. Ci vuole unlistcome input e restituisce l'intera lista senza la parte di testa. Ciò significa che il filetailla funzione restituisce l'intero elenco senza il primo elemento. Dai un'occhiata al seguente esempio:

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

Produrrà il seguente output:

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]

Ultima funzione

Come suggerisce il nome, restituisce l'ultimo elemento dell'elenco fornito come input. Controlla il seguente esempio.

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

Produrrà il seguente output:

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

Funzione Init

Init funziona esattamente come l'opposto di tailfunzione. Accetta un elenco come argomento e restituisce l'intero elenco senza l'ultima voce.

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

Ora, osserva il suo output -

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]

Funzione nulla

Null è una funzione di controllo booleano che funziona su una stringa e restituisce True solo quando la lista data è vuota, altrimenti ritorna False. Il codice seguente controlla se l'elenco fornito è vuoto o meno.

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

Produrrà il seguente output:

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

Funzione inversa

Funziona su un input String e converte l'intero input in ordine inverso e fornisce un output come risultato. Di seguito è riportato il codice di base per questa funzione.

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

Produrrà il seguente output:

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]

Funzione di lunghezza

Questa funzione viene utilizzata per calcolare la lunghezza del file listdato come argomento. Dai un'occhiata al seguente esempio:

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

Abbiamo 10 elementi nella nostra lista, quindi il nostro codice restituirà 10 come output.

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

Prendi la funzione

Takeviene utilizzata per creare una sottostringa da un'altra stringa. Il codice seguente mostra come utilizzare la funzione Take in Haskell:

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

Il codice genera una sottostringa contenente 5 elementi dalla lista fornita -

[1,2,3,4,5]

Funzione Drop

Questa funzione viene utilizzata anche per generare una sottostringa. Funziona come l'opposto ditakefunzione. Guarda il seguente pezzo di codice:

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

Il codice elimina i primi 5 elementi dall'elenco fornito e stampa i restanti 5 elementi. Produrrà il seguente output:

[6,7,8,9,10]

Massima funzionalità

Questa funzione viene utilizzata per trovare l'elemento con il valore massimo dalla lista fornita. Vediamo come usarlo in pratica -

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

La parte di codice precedente genererà il seguente output:

The maximum value element of the list is:
1245

Funzione minima

Questa funzione viene utilizzata per trovare l'elemento con il valore minimo dalla lista fornita. È esattamente l'opposto dimaximum funzione.

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

L'output del codice sopra è -

The minimum value element of the list is:
1

Funzione Sum

Come suggerisce il nome, questa funzione restituisce la somma di tutti gli elementi presenti nell'elenco fornito. Il codice seguente accetta un elenco di 5 elementi e restituisce la loro somma come output.

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

Produrrà il seguente output:

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

Funzione del prodotto

È possibile utilizzare questa funzione per moltiplicare tutti gli elementi di un elenco e stamparne il valore.

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

Il nostro codice produrrà il seguente output:

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

Funzione Elem

Questa funzione viene utilizzata per verificare se l'elenco fornito contiene o meno un elemento specifico. Di conseguenza, restituisce un filetrue o a false.

Il codice seguente controlla se l'elenco di elementi fornito contiene il valore 786.

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

Produrrà il seguente output:

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

Utilizzare lo stesso codice per verificare se l'elenco fornito contiene il valore 1785 o meno.