发布于 

Haskell基础

Haskell基础

函数,列表,元组

一些Haskell的基础语法 --- ## 函数定义 * Haskell中函数不能大写字母开头

1
2
3
--函数名 :: 类型
add :: Int -> Int -> Int
doubleMe :: Int -> Int

类型

1
2
3
4
5
6
7
8
9
10
11
-- 普通类型
Int,Double,String,Char etc.
-- 函数类型
使用 -> 进行拼接
如若 add 函数需传入两个Int,输出一个Int,则其类型为
Int -> Int -> Int
-- 而当我们想要 add 函数可对任何类型进行操作操作,我们可以设置为
a -> a -> a
-- 其中a代表任意类型
-- 当我们只需对数字进行操作时,可以使用类型类进行限定,如
(Num a) => a -> a -> a

函数实现

通过模式匹配实现

1
2
3
4
5
6
7
8
9
10
--计算平方的函数
doubleMe x = x * x

--计算平方和的函数
doubleUs x y = x * x + y * y

--将小于100的数乘2
doubleSmallNumber = if x>100
truetruetruetruetruethen x
else 2 * x

列表

类似数组

  1. 可以使用 x:xsx ++ xs的方式来拼接列表

  2. 列表支持嵌套

  3. 可以通过 !! 函数访问列表

  4. Haskell可以自动补全区间,诸如[1..20]['a'..'z']

列表推导式

列表推导式写法类似于数学中的集合,如下:

1
2
3
4
5
6
7
8
--1到20中的所有技术
[ x | x<-[1..20] , x 'mod' 2 /=0]

--x与y的所有乘积
[ x * y | x<-[1..20] , y<-[1..20] ]

--以上的函数一般写法
Multiply xs ys = [ x * y | x<-xs , y<-ys]

元组

类似结构体,可以结合不同类型的元素

元组中只有两个元素时被称为序对

1
2
3
4
5
6
--使用括号进行组合
(a,b)
(a,"what",x)
--可以限定a的类型
add :: (Num a) => (a,a) -> a
add (a,b) = a + b

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站由 [@Songer](https://blog.songer.xyz/) 创建,使用 Stellar 作为主题。