haskell笔记1

haskell platform下载:https://www.haskell.org/platform/

进入haskell控制台,终端输入

$ ghci

编译文件

:l file.hs

数组操作

>> length [2,3] 长度
>> head [2,3] 首值
>> tail [2,3] 去除头之后
>> last [2,3] 尾值
>> 2:[1] 连接数组
>>[2,3] > [1,3]比较
>> null [] 判断是否为空
>> reverse [2,3] 反转
>> drop 3 [2,3]删除前3个
>> take 3 [2,3]取前3个
>> minimum [2,3]最小
>> maximum [2,3]最大
>> 4 `elem` [1,2,3] 是否包含
>> sum [2,3] 和
>> product [2,3] 积

构造数组
>> [1..10]
>> ['1'..'10']
>> take 10 [1,2..] 取1~10
>> take 10 (cycle [1,2,3]) 取循环数组中的前10
>> take 10 (repeat 5) 构造一个数组长度为10,值为5的数组

集合

>> [x * 2 | x <- [1..2], x * 2 > 10]

元祖tuple

>> (8,1)
>> (8,1,"hello")
>> fst (8,1)
>> snd (8,1) 此两函数只对2元组有效
>> zip [1,2] ["ONE", "TWO"] 匹配组合成二元组
求一个直角三角形
>> let triangle = [(a,b,c) | c <- [1..10], a <- [1..c], b <- [1..a], a + b > c, a^2 + b^2 == c^2, a + b + c == 24]
>> triange

 型别

>> :t 1
>> :t "1"
>> :t '1'
>> :t 1==2
基本typeclasses
Eq:判断相等 除函数以外所有型别都属于Eq
Ord:可比较大小
Show:除函数以外都属于Show。可输出字符串
Read:将字符串转为相应类型
>> read "TRUE" || False
Enum可用于range
>> pred 'B' 前一个
>> succ 'B' 后一个
Bounded
>> minBound :: Int
>> maxBound :: Int
Num
Integral
Floating
RealFloat
String
整数和浮点相加
>> fromIntegral (3::Int) + 3.2