Haskell - więcej o funkcjach

Do tej pory omówiliśmy wiele typów funkcji Haskella i używaliśmy różnych sposobów wywoływania tych funkcji. W tym rozdziale dowiemy się o kilku podstawowych funkcjach, których można z łatwością używać w Haskell bez importowania żadnej specjalnej klasy Type. Większość z tych funkcji jest częścią innych funkcji wyższego rzędu.

Funkcja głowy

Headfunkcja działa na liście. Zwraca pierwszy argument wejściowy, który jest w zasadzie listą. W poniższym przykładzie przekazujemy listę z 10 wartościami i generujemy pierwszy element tej listy przy użyciuhead funkcjonować.

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

Wytworzy następujący wynik -

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

Funkcja ogona

Tail jest funkcją, która uzupełnia headfunkcjonować. To zajmujelistjako dane wejściowe i zwraca całą listę bez części głównej. Oznacza to, żetailfunkcja zwraca całą listę bez pierwszego elementu. Spójrz na następujący przykład -

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

Wytworzy następujący wynik -

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]

Ostatnia funkcja

Jak sama nazwa wskazuje, zwraca ostatni element listy, który jest dostarczany jako dane wejściowe. Sprawdź poniższy przykład.

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

Wytworzy następujący wynik -

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

Funkcja Init

Init działa dokładnie tak samo, jak przeciwieństwo tailfunkcjonować. Pobiera listę jako argument i zwraca całą listę bez ostatniego wpisu.

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

Teraz obserwuj jego wyniki -

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]

Funkcja zerowa

Null jest logiczną funkcją sprawdzającą, która działa na łańcuchu i zwraca True tylko wtedy, gdy podana lista jest pusta, w przeciwnym razie zwraca False. Poniższy kod sprawdza, czy podana lista jest pusta, czy nie.

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

Wytworzy następujący wynik -

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

Funkcja odwrotna

Działa na wejściu typu String i konwertuje całe wejście w odwrotnej kolejności i daje w rezultacie jedno wyjście. Poniżej znajduje się podstawa kodu dla tej funkcji.

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

Wytworzy następujący wynik -

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]

Funkcja długości

Ta funkcja służy do obliczania długości pliku listjako argument. Spójrz na następujący przykład -

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

Mamy 10 elementów na naszej liście, stąd nasz kod zwróci 10 jako wynik.

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

Weź funkcję

Takefunkcja służy do tworzenia podłańcucha z innego ciągu. Poniższy kod pokazuje, jak można użyć funkcji take w Haskell -

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

Kod generuje podciąg zawierający 5 elementów z dostarczonej listy -

[1,2,3,4,5]

Funkcja upuszczania

Ta funkcja jest również używana do generowania podciągu. Działa jako przeciwieństwotakefunkcjonować. Spójrz na następujący fragment kodu -

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

Kod usuwa pierwsze 5 elementów z dostarczonej listy i drukuje pozostałe 5 elementów. Wytworzy następujący wynik -

[6,7,8,9,10]

Maksymalna funkcja

Ta funkcja służy do znajdowania elementu o maksymalnej wartości z dostarczonej listy. Zobaczmy, jak to wykorzystać w praktyce -

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

Powyższy fragment kodu wygeneruje następujące dane wyjściowe -

The maximum value element of the list is:
1245

Minimalna funkcja

Ta funkcja służy do znalezienia elementu o minimalnej wartości z dostarczonej listy. To po prostu przeciwieństwomaximum funkcjonować.

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

Wynik powyższego kodu to -

The minimum value element of the list is:
1

Funkcja sumy

Jak sama nazwa wskazuje, funkcja ta zwraca sumę wszystkich elementów znajdujących się na podanej liście. Poniższy kod pobiera listę 5 elementów i zwraca ich sumę jako dane wyjściowe.

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

Wytworzy następujący wynik -

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

Funkcja produktu

Możesz użyć tej funkcji, aby pomnożyć wszystkie elementy listy i wydrukować jej wartość.

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

Nasz kod wygeneruje następujący wynik -

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

Funkcja Elem

Ta funkcja służy do sprawdzania, czy dostarczona lista zawiera określony element, czy nie. W związku z tym zwraca atrue lub a false.

Poniższy kod sprawdza, czy podana lista elementów zawiera wartość 786.

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

Wytworzy następujący wynik -

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

Użyj tego samego kodu, aby sprawdzić, czy dostarczona lista zawiera wartość 1785, czy nie.