Haskell - Thêm về các chức năng
Cho đến bây giờ, chúng ta đã thảo luận về nhiều loại hàm Haskell và sử dụng các cách khác nhau để gọi các hàm đó. Trong chương này, chúng ta sẽ tìm hiểu về một số hàm cơ bản có thể dễ dàng sử dụng trong Haskell mà không cần nhập bất kỳ lớp Type đặc biệt nào. Hầu hết các chức năng này là một phần của các chức năng bậc cao khác.
Chức năng đầu
Headchức năng hoạt động trên một Danh sách. Nó trả về đối số đầu tiên về cơ bản là một danh sách. Trong ví dụ sau, chúng tôi đang chuyển một danh sách có 10 giá trị và chúng tôi đang tạo phần tử đầu tiên của danh sách đó bằng cách sử dụnghead chức năng.
main = do
let x = [1..10]
putStrLn "Our list is:"
print (x)
putStrLn "The first element of the list is:"
print (head x)
Nó sẽ tạo ra kết quả sau:
Our list is:
[1,2,3,4,5,6,7,8,9,10]
The first element of the list is:
1
Chức năng đuôi
Tail là hàm bổ sung cho headchức năng. Nó cần mộtlistlàm đầu vào và tạo ra toàn bộ danh sách mà không có phần đầu. Điều đó có nghĩa là,tailhàm trả về toàn bộ danh sách mà không có phần tử đầu tiên. Hãy xem ví dụ sau:
main = do
let x = [1..10]
putStrLn "Our list is:"
print (x)
putStrLn "The tail of our list is:"
print (tail x)
Nó sẽ tạo ra kết quả sau:
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]
Chức năng cuối cùng
Như tên cho thấy, nó mang lại phần tử cuối cùng của danh sách được cung cấp làm đầu vào. Kiểm tra ví dụ sau.
main = do
let x = [1..10]
putStrLn "Our list is:"
print (x)
putStrLn "The last element of our list is:"
print (last x)
Nó sẽ tạo ra kết quả sau:
Our list is:
[1,2,3,4,5,6,7,8,9,10]
The last element of our list is:
10
Chức năng Init
Init hoạt động hoàn toàn ngược lại với tailchức năng. Nó nhận một danh sách làm đối số và trả về toàn bộ danh sách mà không có mục nhập cuối cùng.
main = do
let x = [1..10]
putStrLn "Our list is:"
print (x)
putStrLn "Our list without the last entry:"
print (init x)
Bây giờ, hãy quan sát đầu ra của nó -
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]
Hàm Null
Null là một hàm kiểm tra Boolean hoạt động trên một Chuỗi và trả về True chỉ khi danh sách đã cho trống, nếu không nó sẽ trả về False. Đoạn mã sau kiểm tra xem danh sách được cung cấp có trống hay không.
main = do
let x = [1..10]
putStrLn "Our list is:"
print (x)
putStrLn "Is our list empty?"
print (null x)
Nó sẽ tạo ra kết quả sau:
Our list is:
[1,2,3,4,5,6,7,8,9,10]
Is our list empty?
False
Chức năng Đảo ngược
Nó hoạt động trên đầu vào Chuỗi và chuyển đổi toàn bộ đầu vào thành thứ tự ngược lại và kết quả là một đầu ra. Dưới đây là mã cơ sở cho chức năng này.
main = do
let x = [1..10]
putStrLn "Our list is:"
print (x)
putStrLn "The list in Reverse Order is:"
print (reverse x)
Nó sẽ tạo ra kết quả sau:
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]
Hàm chiều dài
Hàm này được sử dụng để tính toán độ dài của listđưa ra như một đối số. Hãy xem ví dụ sau:
main = do
let x = [1..10]
putStrLn "Our list is:"
print (x)
putStrLn "The length of this list is:"
print (length x)
Chúng tôi có 10 phần tử trong danh sách của mình, do đó mã của chúng tôi sẽ mang lại 10 phần tử như đầu ra.
Our list is:
[1,2,3,4,5,6,7,8,9,10]
The length of this list is:
10
Thực hiện chức năng
Takehàm được sử dụng để tạo một chuỗi con từ một Chuỗi khác. Đoạn mã sau đây cho thấy cách bạn có thể sử dụng hàm take trong Haskell:
main = print(take 5 ([1 .. 10]))
Mã tạo một chuỗi con chứa 5 phần tử từ danh sách được cung cấp -
[1,2,3,4,5]
Chức năng thả
Hàm này cũng được sử dụng để tạo một chuỗi con. Nó hoạt động như đối lập vớitakechức năng. Nhìn vào đoạn mã sau:
main = print(drop 5 ([1 .. 10]))
Mã loại bỏ 5 phần tử đầu tiên khỏi danh sách được cung cấp và in 5 phần tử còn lại. Nó sẽ tạo ra kết quả sau:
[6,7,8,9,10]
Chức năng tối đa
Hàm này được sử dụng để tìm phần tử có giá trị lớn nhất từ danh sách được cung cấp. Hãy để chúng tôi xem cách sử dụng nó trong thực tế -
main = do
let x = [1,45,565,1245,02,2]
putStrLn "The maximum value element of the list is:"
print (maximum x)
Đoạn mã trên sẽ tạo ra kết quả sau:
The maximum value element of the list is:
1245
Chức năng tối thiểu
Hàm này được sử dụng để tìm phần tử có giá trị nhỏ nhất từ danh sách được cung cấp. Nó hoàn toàn ngược lại vớimaximum chức năng.
main = do
let x = [1,45,565,1245,02,2]
putStrLn "The minimum value element of the list is:"
print (minimum x)
Đầu ra của đoạn mã trên là -
The minimum value element of the list is:
1
Hàm Sum
Như tên cho thấy, hàm này trả về tổng của tất cả các phần tử có trong danh sách được cung cấp. Đoạn mã sau lấy danh sách 5 phần tử và trả về tổng kết của chúng dưới dạng đầu ra.
main = do
let x = [1..5]
putStrLn "Our list is:"
print (x)
putStrLn "The summation of the list elements is:"
print (sum x)
Nó sẽ tạo ra kết quả sau:
Our list is:
[1,2,3,4,5]
The summation of the list elements is:
15
Chức năng sản phẩm
Bạn có thể sử dụng hàm này để nhân tất cả các phần tử trong danh sách và in giá trị của nó.
main = do
let x = [1..5]
putStrLn "Our list is:"
print (x)
putStrLn "The multiplication of the list elements is:"
print (product x)
Mã của chúng tôi sẽ tạo ra kết quả sau:
Our list is:
[1,2,3,4,5]
The multiplication of the list elements is:
120
Chức năng Elem
Chức năng này được sử dụng để kiểm tra xem danh sách được cung cấp có chứa một phần tử cụ thể hay không. Theo đó, nó trả về mộttrue hoặc một false.
Đoạn mã sau kiểm tra xem danh sách các phần tử được cung cấp có chứa giá trị 786 hay không.
main = do
let x = [1,45,155,1785]
putStrLn "Our list is:"
print (x)
putStrLn "Does it contain 786?"
print (elem 786 (x))
Nó sẽ tạo ra kết quả sau:
Our list is:
[1,45,155,1785]
Does it contain 786?
False
Sử dụng mã tương tự để kiểm tra xem danh sách được cung cấp có chứa giá trị 1785 hay không.