- Haskell 教程
- Haskell - 首页
- Haskell - 概述
- Haskell - 环境设置
- Haskell - 基本数据模型
- Haskell - 基本运算符
- Haskell - 决策
- Haskell - 类型和类型类
- Haskell - 函数
- Haskell - 函数详解
- Haskell - 函数组合
- Haskell - 模块
- Haskell - 输入与输出
- Haskell - Functor
- Haskell - Monad
- Haskell - Zipper
- Haskell 有用资源
- Haskell - 快速指南
- Haskell - 有用资源
- Haskell - 讨论
Haskell - 模块
如果你使用过 Java,那么你应该知道所有类是如何绑定到一个名为包的文件夹中的。类似地,Haskell 可以被认为是模块的集合。
Haskell 是一种函数式语言,所有内容都表示为表达式,因此模块可以被称为相似或相关类型函数的集合。
你可以从一个模块导入函数到另一个模块。所有“导入”语句都应该在开始定义其他函数之前出现。在本章中,我们将学习 Haskell 模块的不同特性。
列表模块
列表提供了一些用于处理列表类型数据的优秀函数。一旦你导入了 List 模块,你就可以使用各种各样的函数。
在下面的示例中,我们使用了一些 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])
在这里,我们有很多函数,甚至没有定义它们。这是因为这些函数在 List 模块中可用。导入 List 模块后,Haskell 编译器使所有这些函数在全局命名空间中可用。因此,我们可以使用这些函数。
我们的代码将产生以下输出:
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 模块有许多预定义的函数来处理字符类型。请查看以下代码块:
import Data.Char
main = do
putStrLn("Different methods of Char Module")
print(toUpper 'a')
print(words "Let us study tonight")
print(toLower 'A')
在这里,函数toUpper 和toLower 已经在Char 模块中定义。它将产生以下输出:
Different methods of Char Module 'A' ["Let","us","study","tonight"] 'a'
映射模块
Map 是一种无序的键值对类型数据类型。它是一个广泛使用的模块,包含许多有用的函数。以下示例演示了如何使用 Map 模块中可用的预定义函数。
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)
它将产生以下输出:
fromList [(1,[1]),(2,[2]),(3,[3])]
集合模块
Set 模块有一些非常有用的预定义函数来操作数学数据。集合被实现为二叉树,因此集合中的所有元素都必须是唯一的。
请查看以下示例代码
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)
在这里,我们将字符串修改为集合。它将产生以下输出。请注意,输出集合中没有字符重复。
fromList " Hbdeuy" fromList " HTaefhiklorstu"
自定义模块
让我们看看如何创建一个可以在其他程序中调用的自定义模块。要实现此自定义模块,我们将创建一个名为“custom.hs” 的单独文件以及我们的“main.hs”。
让我们创建自定义模块并在其中定义一些函数。
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
我们的自定义模块已准备就绪。现在,让我们将其导入到程序中。
main.hs
import Custom main = do print(showEven 4) print(showBoolean True)
我们的代码将生成以下输出:
True 1
showEven 函数返回True,因为“4”是偶数。showBoolean 函数返回“1”,因为我们传递给函数的布尔函数为“True”。