笔记/Haskell语法/入门
ghci的一些命令
-
设置提示符 :set prompt "ghci>" -
设置是否后缀类型显示 :set +t:unset +t -
显示类型 :type简写:t -
载入文件 :load简写:l -
预先加载module :module + Data.Ratio -
查看操作符优先级 :info (+)(infixl 6 + 指 左结合 优先级为6;infixr 指 右结合) -
获取帮助信息 :? -
单行注释 -- -
多行注释 {- -}
运算符
-
不等于 /= -
取余 mod -
逻辑与 && -
逻辑或 || -
逻辑非 not -
整数乘方操作符 ^ -
浮点数乘方操作符 ** -
let构造 定义临时变量 let e = 1
列表
[]::[a]一个列表由方括号以及被逗号分隔的元素组成,所有元素必须是相同类型。
字符串[Char]实际是字符Char列表,存在"string"==['s','t','r','i','n','g']、""==[]。
列表Range特性及操作符:
-
Range特性 -
[1..10][1.0,1.25..2.0],通过最初两个元素之间步调的大小,来指明后续元素如何生成 -
cycle xs 生成重复的无限长List -
repeat n 生成仅含有n的无限长List -
replicate n xs 生成含有n组xs的List -
索引符 !!如[1,2,3]!!0==1 -
连接符 ++如[3,1,3] ++ [3,7] -
cons符 :如1 : [2,3],:的第一个参数必须是单个元素同时第二个必须是一个列表
List Comprehension用法列举
-
[x*y | x<-[1,2,3] , y<-[1,2,3], x>=2 ,y<=2] -
[if x mod 2 == 0 then "even" else "odd" | x <- [1..10]]其中10 mod 2等价于mod 10 2 -
mylength xs = sum [1 | _ <- xs]
一些常用的类型簇(Typeclass)
类型簇可以看作满足一系列特性的类的集合,使用class关键字创建Typeclass,在类型签名时只可将类型簇用作约束类型,不能用作具体类型。
-
Bounded 有界性 -
Eq 相等性 -
Ord 可比性 返回LT、GT、EQ等 -
Show 显示性 show函数可以取任意Show类型转换为字符串 -
Read 可读性 read函数读取字符串转换为Read类型相应成员类 -
Num 数值类型 -
Fractional 分数类型 -
Integral 整数类型 包括Int、Integer -
Floating 浮点类型 包括Float、Double -
Enum 可枚举性 使用succ、pred等函数可取得前驱或后继值
练习
-
succ 6==7 -
pred 7==6 -
truncate pi==3 -
round 3.5==4round 3.4==3 -
floor 3.7==3 -
ceiling 3.3==4 -
见下方代码块
Prelude> let x=1
Prelude> :show bindings
it :: Bool = True
x :: Num p => p = _
-
见下方代码块
--comments WC.hs
main = interact wordCount
where wordCount input =show(length(lines input))++"\n"
两种运行程序方法
-
直接运行程序 runhaskell(or runghc) WC.hs < quux.txt若无<quux.txt文件输入,可在命令行中直接输入,如
cmd> runhaskell WC.hs
--line1
--line2
2
-
先编译 ghc WC.hs生成WC.exe后WC.exe < quux.txt
