Haskell - Mô-đun

Nếu bạn đã làm việc trên Java, thì bạn sẽ biết cách tất cả các lớp được liên kết vào một thư mục được gọi là package. Tương tự, Haskell có thể được coi là một tập hợp củamodules.

Haskell là một ngôn ngữ chức năng và mọi thứ được biểu thị dưới dạng một biểu thức, do đó Mô-đun có thể được gọi là một tập hợp các loại chức năng tương tự hoặc có liên quan.

Bạn có thể importmột chức năng từ một mô-đun này sang một mô-đun khác. Tất cả các câu lệnh "nhập" phải xuất hiện trước trước khi bạn bắt đầu xác định các hàm khác. Trong chương này, chúng ta sẽ tìm hiểu các tính năng khác nhau của các mô-đun Haskell.

Mô-đun danh sách

List cung cấp một số chức năng tuyệt vời để làm việc với listnhập dữ liệu. Sau khi nhập mô-đun Danh sách, bạn có nhiều chức năng theo ý của mình.

Trong ví dụ sau, chúng tôi đã sử dụng một số chức năng quan trọng có sẵn trong mô-đun Danh sách.

import Data.List  

main = do  
   putStrLn("Different methods of List Module") 
   print(intersperse '.' "Tutorialspoint.com") 
   print(intercalate " " ["Lets","Start","with","Haskell"]) 
   print(splitAt 7 "HaskellTutorial") 
   print (sort [8,5,3,2,1,6,4,2])

Ở đây, chúng ta có nhiều chức năng mà không cần xác định chúng. Đó là bởi vì các chức năng này có sẵn trong mô-đun Danh sách. Sau khi nhập mô-đun Danh sách, trình biên dịch Haskell làm cho tất cả các chức năng này có sẵn trong không gian tên chung. Do đó, chúng tôi có thể sử dụng các chức năng này.

Mã của chúng tôi sẽ mang lại kết quả sau:

Different methods of List Module
"T.u.t.o.r.i.a.l.s.p.o.i.n.t...c.o.m"
"Lets Start with Haskell"
("Haskell","Tutorial")
[1,2,2,3,4,5,6,8]

Mô-đun Char

Các Charmô-đun có rất nhiều chức năng được xác định trước để làm việc với loại Character. Hãy xem khối mã sau:

import Data.Char 

main = do  
   putStrLn("Different methods of Char Module") 
   print(toUpper 'a') 
   print(words "Let us study tonight") 
   print(toLower 'A')

Tại đây, các chức năng toUppertoLower đã được xác định bên trong Charmô-đun. Nó sẽ tạo ra kết quả sau:

Different methods of Char Module
'A'
["Let","us","study","tonight"]
'a'

Mô-đun bản đồ

Maplà kiểu dữ liệu kiểu cặp giá trị gia tăng không được sắp xếp. Nó là một mô-đun được sử dụng rộng rãi với nhiều chức năng hữu ích. Ví dụ sau đây cho thấy cách bạn có thể sử dụng một chức năng được xác định trước có sẵn trong mô-đun Bản đồ.

import Data.Map (Map) 
import qualified Data.Map as Map  --required for GHCI  

myMap :: Integer -> Map Integer [Integer] 
myMap n = Map.fromList (map makePair [1..n]) 
   where makePair x = (x, [x])  

main = print(myMap 3)

Nó sẽ tạo ra kết quả sau:

fromList [(1,[1]),(2,[2]),(3,[3])]

Đặt mô-đun

Mô-đun Set có một số chức năng được xác định trước rất hữu ích để thao tác với dữ liệu toán học. Một tập hợp được thực hiện dưới dạng cây nhị phân, vì vậy tất cả các phần tử trong một tập hợp phải là duy nhất.

Hãy xem đoạn mã ví dụ sau

import qualified Data.Set as Set   

text1 = "Hey buddy"   
text2 = "This tutorial is for Haskell"   

main = do  
   let set1 = Set.fromList text1   
       set2 = Set.fromList text2 
   print(set1) 
   print(set2)

Ở đây, chúng tôi đang sửa đổi một Chuỗi thành một Tập hợp. Nó sẽ tạo ra kết quả sau. Quan sát rằng tập hợp đầu ra không có ký tự lặp lại.

fromList " Hbdeuy"
fromList " HTaefhiklorstu"

Mô-đun tùy chỉnh

Hãy xem cách chúng ta có thể tạo một mô-đun tùy chỉnh có thể được gọi ở các chương trình khác. Để triển khai mô-đun tùy chỉnh này, chúng tôi sẽ tạo một tệp riêng có tên"custom.hs" cùng với của chúng tôi "main.hs".

Hãy để chúng tôi tạo mô-đun tùy chỉnh và xác định một vài chức năng trong đó.

custom.hs

module Custom ( 
   showEven, 
   showBoolean 
) where 

showEven:: Int-> Bool 
showEven x = do 

if x 'rem' 2 == 0 
   then True 
else False 
showBoolean :: Bool->Int 
showBoolean c = do 

if c == True 
   then 1 
else 0

Mô-đun tùy chỉnh của chúng tôi đã sẵn sàng. Bây giờ, chúng ta hãy nhập nó vào một chương trình.

main.hs

import Custom 

main = do 
   print(showEven 4) 
   print(showBoolean True)

Mã của chúng tôi sẽ tạo ra kết quả sau:

True
1

Các showEven hàm trả về True, vì "4" là một số chẵn. CácshowBoolean hàm trả về "1" là hàm Boolean mà chúng ta đã truyền vào hàm là "True".