Haskell - Módulos
Si ha trabajado en Java, entonces sabría cómo todas las clases están enlazadas en una carpeta llamada package. De manera similar, Haskell puede considerarse como una colección demodules.
Haskell es un lenguaje funcional y todo se denota como una expresión, por lo tanto, un módulo se puede llamar como una colección de tipos de funciones similares o relacionadas.
Usted puede importuna función de un módulo a otro módulo. Todas las declaraciones de "importación" deben ir primero antes de comenzar a definir otras funciones. En este capítulo, aprenderemos las diferentes características de los módulos de Haskell.
Módulo de lista
List proporciona algunas funciones maravillosas para trabajar listescriba los datos. Una vez que importe el módulo Lista, tendrá una amplia gama de funciones a su disposición.
En el siguiente ejemplo, hemos utilizado algunas funciones importantes disponibles en el módulo Lista.
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])
Aquí tenemos muchas funciones sin siquiera definirlas. Esto se debe a que estas funciones están disponibles en el módulo Lista. Después de importar el módulo List, el compilador Haskell hizo que todas estas funciones estuvieran disponibles en el espacio de nombres global. Por tanto, podríamos utilizar estas funciones.
Nuestro código producirá el siguiente resultado:
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ódulo de caracteres
los CharEl módulo tiene muchas funciones predefinidas para trabajar con el tipo de carácter. Eche un vistazo al siguiente bloque de código:
import Data.Char
main = do
putStrLn("Different methods of Char Module")
print(toUpper 'a')
print(words "Let us study tonight")
print(toLower 'A')
Aquí, las funciones toUpper y toLower ya están definidos dentro del Charmódulo. Producirá la siguiente salida:
Different methods of Char Module
'A'
["Let","us","study","tonight"]
'a'
Módulo de mapa
Mapes un tipo de datos de tipo de par de valor agregado sin clasificar. Es un módulo ampliamente utilizado con muchas funciones útiles. El siguiente ejemplo muestra cómo puede utilizar una función predefinida disponible en el módulo Mapa.
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)
Producirá la siguiente salida:
fromList [(1,[1]),(2,[2]),(3,[3])]
Configurar módulo
El módulo Set tiene algunas funciones predefinidas muy útiles para manipular datos matemáticos. Un conjunto se implementa como un árbol binario, por lo que todos los elementos de un conjunto deben ser únicos.
Eche un vistazo al siguiente código de ejemplo
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)
Aquí, estamos modificando una cadena en un conjunto. Producirá la siguiente salida. Observe que el conjunto de salida no tiene repetición de caracteres.
fromList " Hbdeuy"
fromList " HTaefhiklorstu"
Módulo personalizado
Veamos cómo podemos crear un módulo personalizado que se pueda llamar en otros programas. Para implementar este módulo personalizado, crearemos un archivo separado llamado"custom.hs" junto con nuestro "main.hs".
Creemos el módulo personalizado y definamos algunas funciones en él.
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
Nuestro módulo personalizado está listo. Ahora, importémoslo a un programa.
main.hs
import Custom
main = do
print(showEven 4)
print(showBoolean True)
Nuestro código generará la siguiente salida:
True
1
los showEven devuelve la función True, ya que "4" es un número par. losshowBoolean La función devuelve "1" ya que la función booleana que pasamos a la función es "Verdadero".