Haskell - Module

Wenn Sie an Java gearbeitet haben, wissen Sie, wie alle Klassen in einen Ordner namens gebunden sind package. Ebenso kann Haskell als eine Sammlung von betrachtet werdenmodules.

Haskell ist eine funktionale Sprache und alles wird als Ausdruck bezeichnet. Daher kann ein Modul als Sammlung ähnlicher oder verwandter Arten von Funktionen bezeichnet werden.

Sie können importeine Funktion von einem Modul in ein anderes Modul. Alle "import" -Anweisungen sollten an erster Stelle stehen, bevor Sie andere Funktionen definieren. In diesem Kapitel lernen wir die verschiedenen Funktionen von Haskell-Modulen kennen.

Listenmodul

List bietet einige wunderbare Funktionen zum Arbeiten listDaten eingeben. Sobald Sie das List-Modul importiert haben, steht Ihnen eine Vielzahl von Funktionen zur Verfügung.

Im folgenden Beispiel haben wir einige wichtige Funktionen verwendet, die im Listenmodul verfügbar sind.

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

Hier haben wir viele Funktionen, ohne sie zu definieren. Dies liegt daran, dass diese Funktionen im Listenmodul verfügbar sind. Nach dem Import des List-Moduls stellte der Haskell-Compiler alle diese Funktionen im globalen Namespace zur Verfügung. Daher könnten wir diese Funktionen verwenden.

Unser Code liefert die folgende Ausgabe -

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]

Char-Modul

Das CharDas Modul verfügt über zahlreiche vordefinierte Funktionen, um mit dem Zeichentyp zu arbeiten. Schauen Sie sich den folgenden Codeblock an -

import Data.Char 

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

Hier die Funktionen toUpper und toLower sind bereits in der definiert CharModul. Es wird die folgende Ausgabe erzeugt -

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

Kartenmodul

Mapist ein unsortierter Datentyp mit Wertschöpfungspaartyp. Es ist ein weit verbreitetes Modul mit vielen nützlichen Funktionen. Das folgende Beispiel zeigt, wie Sie eine vordefinierte Funktion verwenden können, die im Map-Modul verfügbar ist.

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)

Es wird die folgende Ausgabe erzeugt -

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

Modul einstellen

Das Set-Modul verfügt über einige sehr nützliche vordefinierte Funktionen zum Bearbeiten mathematischer Daten. Eine Menge wird als Binärbaum implementiert, daher müssen alle Elemente in einer Menge eindeutig sein.

Schauen Sie sich den folgenden Beispielcode an

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)

Hier ändern wir einen String in einen Set. Es wird die folgende Ausgabe erzeugt. Beachten Sie, dass der Ausgabesatz keine Zeichenwiederholung enthält.

fromList " Hbdeuy"
fromList " HTaefhiklorstu"

Benutzerdefiniertes Modul

Mal sehen, wie wir ein benutzerdefiniertes Modul erstellen können, das bei anderen Programmen aufgerufen werden kann. Um dieses benutzerdefinierte Modul zu implementieren, erstellen wir eine separate Datei mit dem Namen"custom.hs" zusammen mit unserem "main.hs".

Lassen Sie uns das benutzerdefinierte Modul erstellen und einige Funktionen darin definieren.

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

Unser Custom-Modul ist fertig. Nun importieren wir es in ein Programm.

main.hs

import Custom 

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

Unser Code generiert die folgende Ausgabe:

True
1

Das showEven Funktion kehrt zurück True, da "4" eine gerade Zahl ist. DasshowBoolean Die Funktion gibt "1" zurück, da die Boolesche Funktion, die wir an die Funktion übergeben haben, "True" ist.