Haskell - Moduli

Se hai lavorato su Java, allora sapresti come tutte le classi sono legate in una cartella chiamata package. Allo stesso modo, Haskell può essere considerato come una raccolta di filemodules.

Haskell è un linguaggio funzionale e tutto è indicato come un'espressione, quindi un modulo può essere chiamato come una raccolta di tipi di funzioni simili o correlati.

Puoi importuna funzione da un modulo a un altro modulo. Tutte le istruzioni "import" dovrebbero venire prima prima di iniziare a definire altre funzioni. In questo capitolo, impareremo le diverse caratteristiche dei moduli Haskell.

Modulo elenco

List fornisce alcune meravigliose funzioni con cui lavorare listtipo di dati. Una volta importato il modulo List, hai a disposizione un'ampia gamma di funzioni.

Nell'esempio seguente, abbiamo utilizzato alcune importanti funzioni disponibili nel modulo List.

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])

Qui abbiamo molte funzioni senza nemmeno definirle. Questo perché queste funzioni sono disponibili nel modulo List. Dopo aver importato il modulo List, il compilatore Haskell ha reso disponibili tutte queste funzioni nello spazio dei nomi globale. Quindi, potremmo usare queste funzioni.

Il nostro codice produrrà il seguente output:

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]

Modulo Char

Il Charha molte funzioni predefinite per lavorare con il tipo di carattere. Dai un'occhiata al seguente blocco di codice:

import Data.Char 

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

Qui, le funzioni toUpper e toLower sono già definiti all'interno del file Charmodulo. Produrrà il seguente output:

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

Modulo mappa

Mapè un tipo di dati di tipo coppia a valore aggiunto non ordinato. È un modulo ampiamente utilizzato con molte funzioni utili. L'esempio seguente mostra come utilizzare una funzione predefinita disponibile nel modulo Mappa.

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)

Produrrà il seguente output:

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

Imposta modulo

Il modulo Set ha alcune funzioni predefinite molto utili per manipolare dati matematici. Un insieme è implementato come un albero binario, quindi tutti gli elementi in un insieme devono essere univoci.

Dai un'occhiata al seguente codice di esempio

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)

Qui stiamo modificando una stringa in un set. Produrrà il seguente output. Si noti che il set di output non ha ripetizioni di caratteri.

fromList " Hbdeuy"
fromList " HTaefhiklorstu"

Modulo personalizzato

Vediamo come possiamo creare un modulo personalizzato che può essere chiamato in altri programmi. Per implementare questo modulo personalizzato, creeremo un file separato chiamato"custom.hs" insieme al nostro "main.hs".

Creiamo il modulo personalizzato e definiamo alcune funzioni in esso.

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

Il nostro modulo personalizzato è pronto. Ora, importiamolo in un programma.

main.hs

import Custom 

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

Il nostro codice genererà il seguente output:

True
1

Il showEven restituisce la funzione True, poiché "4" è un numero pari. IlshowBoolean funzione restituisce "1" poiché la funzione booleana che abbiamo passato alla funzione è "True".