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.