📅  最后修改于: 2023-12-03 15:22:49.520000             🧑  作者: Mango
Haskell是一种函数式编程语言,其特点是具有强类型和惰性计算特性。它的语法优美,使用Lambda演算作为其理论基础。
Haskell程序由一个main函数作为入口,也可以通过import导入其他模块。Haskell程序使用函数定义来实现各种功能。以下是一个简单的Haskell程序示例:
main :: IO ()
main = putStrLn "Hello World!"
该程序定义了一个main函数,输出"Hello World!"。其中 IO ()
是这个函数的类型,表示这个函数执行IO计算并返回一个空的结果。
Haskell中的函数定义使用=
号进行,函数的参数列表用空格隔开。函数的返回值可以自动推断出来,也可以在函数定义中显式指定。
add :: Int -> Int -> Int
add x y = x + y
该函数定义了一个add
函数,接受两个整数并返回它们的和。函数的类型为Int -> Int -> Int
,表示接受两个整数并返回一个整数。
Haskell内置了一些方便的列表操作函数,如map
,filter
,foldr
等。以map
函数为例:
square :: Int -> Int
square x = x * x
squares :: [Int] -> [Int]
squares xs = map square xs
该代码定义了一个square
函数,接受一个整数并返回它的平方。squares
函数接受一个整数列表并返回它们的平方列表,其中使用了map
函数将每个整数应用到square
函数上。
Haskell中的模式匹配是一种强大的功能,它可以对不同的参数进行不同的操作。以factorial
函数为例:
factorial :: Int -> Int
factorial 0 = 1
factorial n = n * factorial (n-1)
该函数定义了一个factorial
函数,接受一个整数并返回它的阶乘。当输入为0时,返回1;否则递归调用factorial
函数并乘以当前参数。
Haskell中的类型类是一种类似于接口的概念,用来描述具有相似属性和行为的类型。Haskell中的常用类型类包括Eq
,Ord
,Show
等。以Eq
类型类为例:
class Eq a where
(==) :: a -> a -> Bool
(/=) :: a -> a -> Bool
该代码定义了一个Eq
类型类,其包含两个函数==
和/=
。这两个函数用于比较类型a的值是否相等和是否不相等。
以上就是Haskell的一些基本概念和代码示例。在学习Haskell时,可以多尝试一些简单的程序和函数实现。