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