Учебники

Haskell — Подробнее о функциях

До сих пор мы обсуждали многие типы функций Haskell и использовали разные способы вызова этих функций. В этой главе мы узнаем о некоторых основных функциях, которые можно легко использовать в Haskell без импорта какого-либо специального класса Type. Большинство из этих функций являются частью других функций более высокого порядка.

Функция головы

Головная функция работает в списке. Возвращает первый входной аргумент, который в основном является списком. В следующем примере мы передаем список с 10 значениями и генерируем первый элемент этого списка, используя функцию head .

Live Demo

 main = do 
    пусть х = [1..10]   
    putStrLn "Наш список:"  
    печать (х) 
    putStrLn "Первый элемент списка:" 
    печать (голова х)

Это даст следующий результат —

 Наш список: 
 [1,2,3,4,5,6,7,8,9,10]
 Первый элемент списка:
 1

Хвост Функция

Хвост — это функция, которая дополняет функцию головы . Он принимает список в качестве входных данных и выдает весь список без головной части. Это означает, что функция tail возвращает весь список без первого элемента. Взгляните на следующий пример —

Live Demo

 main = do 
    пусть х = [1..10]   
    putStrLn "Наш список:"  
    печать (х) 
    putStrLn "Хвост нашего списка:" 
    печать (хвост х) 

Это даст следующий результат —

 Наш список:
 [1,2,3,4,5,6,7,8,9,10]
 Хвост нашего списка:
 [2,3,4,5,6,7,8,9,10]

Последняя функция

Как следует из названия, он возвращает последний элемент списка, который предоставляется в качестве входных данных. Проверьте следующий пример.

Live Demo

 main = do 
    пусть х = [1..10]   
    putStrLn "Наш список:"  
    печать (х) 
    putStrLn "Последний элемент нашего списка:" 
    печать (последний х)

Это даст следующий результат —

 Наш список:
 [1,2,3,4,5,6,7,8,9,10]
 Последний элемент нашего списка:
 10

Функция инициализации

Init работает точно так же, как функция tail . Он принимает список в качестве аргумента и возвращает весь список без последней записи.

Live Demo

 main = do 
    пусть х = [1..10]   
    putStrLn "Наш список:"  
    печать (х) 
    putStrLn "Наш список без последней записи:"  
    печать (init x) 

Теперь понаблюдайте за его выводом —

 Наш список:
 [1,2,3,4,5,6,7,8,9,10]
 Наш список без последней записи:
 [1,2,3,4,5,6,7,8,9]

Нулевая функция

Null — это булева функция проверки, которая работает со строкой и возвращает True только тогда, когда данный список пуст, в противном случае возвращается False . Следующий код проверяет, является ли предоставленный список пустым или нет.

Live Demo

 main = do 
    пусть х = [1..10]   
    putStrLn "Наш список:"  
    печать (х) 
    putStrLn "Наш список пуст?"  
    печать (ноль х)

Это даст следующий результат —

 Наш список:
 [1,2,3,4,5,6,7,8,9,10]
 Наш список пуст?
 Ложь

Обратная функция

Он работает на входе String и преобразует весь вход в обратном порядке и дает один выход в результате. Ниже приведена база кода для этой функции.

Live Demo

 main = do 
    пусть х = [1..10]  
    putStrLn "Наш список:" 
    печать (х) 
    putStrLn "Список в обратном порядке:" 
    печать (обратный х)

Это даст следующий результат —

 Наш список:
 [1,2,3,4,5,6,7,8,9,10]
 Список в обратном порядке:
 [10,9,8,7,6,5,4,3,2,1]

Функция длины

Эта функция используется для вычисления длины списка, заданного в качестве аргумента. Взгляните на следующий пример —

Live Demo

 main = do 
    пусть х = [1..10]   
    putStrLn "Наш список:" 
    печать (х) 
    putStrLn "Длина этого списка:" 
    печать (длина х)

У нас есть 10 элементов в нашем списке, поэтому наш код выдаст 10 в качестве вывода.

 Наш список:
 [1,2,3,4,5,6,7,8,9,10]
 Длина этого списка:
 10

Взять функцию

Функция Take используется для создания подстроки из другой строки. Следующий код показывает, как вы можете использовать функцию take в Haskell —

Live Demo

 main = print (взять 5 ([1 .. 10])) 

Код генерирует подстроку, содержащую 5 элементов из предоставленного списка —

 [1,2,3,4,5]

Функция Drop

Эта функция также используется для генерации подстроки. Он действует как противоположность функции take . Посмотрите на следующий кусок кода —

Live Demo

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

Код удаляет первые 5 элементов из предоставленного списка и печатает оставшиеся 5 элементов. Это даст следующий результат —

 [6,7,8,9,10]

Максимальная функция

Эта функция используется для поиска элемента с максимальным значением из предоставленного списка. Давайте посмотрим, как использовать это на практике —

Live Demo

 main = do 
    пусть х = [1,45,565,1245,02,2]   
    putStrLn "Максимальное значение элемента списка:"  
    печать (максимум х)

Приведенный выше фрагмент кода сгенерирует следующий вывод:

 Максимальное значение элемента списка:
 1245

Минимальная функция

Эта функция используется для поиска элемента с минимальным значением из предоставленного списка. Это просто противоположность максимальной функции.

Live Demo

 main = do 
    пусть х = [1,45,565,1245,02,2]   
    putStrLn "Элемент минимального значения в списке:"  
    печать (минимум х)

Вывод вышеуказанного кода —

 Элемент минимального значения в списке:
 1

Функция суммы

Как следует из названия, эта функция возвращает суммирование всех элементов, представленных в предоставленном списке. Следующий код берет список из 5 элементов и возвращает их суммирование в качестве вывода.

Live Demo

 main = do 
    пусть х = [1..5] 
    putStrLn "Наш список:" 
    печать (х) 
    putStrLn "Суммирование элементов списка:" 
    печать (сумма х)

Это даст следующий результат —

 Наш список:
 [1,2,3,4,5]
 Суммирование элементов списка:
 15

Функция продукта

Вы можете использовать эту функцию, чтобы умножить все элементы в списке и распечатать его значение.

Live Demo

 main = do 
    пусть х = [1..5] 
    putStrLn "Наш список:" 
    печать (х) 
    putStrLn "Умножение элементов списка:" 
    печать (продукт х) 

Наш код выдаст следующий результат:

 Наш список:
 [1,2,3,4,5]
 Умножение элементов списка: 
 120

Элемент Функция

Эта функция используется для проверки того, содержит ли предоставленный список определенный элемент или нет. Соответственно, он либо возвращает истину, либо ложь .

Следующий код проверяет, содержит ли предоставленный список элементов значение 786.

Live Demo

 main = do 
    пусть х = [1,45,155,1785] 
    putStrLn "Наш список:" 
    печать (х) 
    putStrLn "Содержит ли он 786?" 
    печать (элемент 786 (х))

Это даст следующий результат —

 Наш список:
 [1,45,155,1785]
 Содержит ли он 786?
 Ложь

Используйте тот же код, чтобы проверить, содержит ли предоставленный список значение 1785 или нет.