"设置是否后缀类型显示:set +t :unse...">
美文网首页
《Real World Haskell》笔记(1):入门

《Real World Haskell》笔记(1):入门

作者: Mexplochin | 来源:发表于2018-12-08 20:56 被阅读0次
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特性及操作符:

  1. Range特性
    • [1..10] [1.0,1.25..2.0],通过最初两个元素之间步调的大小,来指明后续元素如何生成
    • cycle xs 生成重复的无限长List
    • repeat n 生成仅含有n的无限长List
    • replicate n xs 生成含有n组xs的List
  2. 索引符!![1,2,3]!!0==1
  3. 连接符++[3,1,3] ++ [3,7]
  4. cons符:1 : [2,3]:的第一个参数必须是单个元素同时第二个必须是一个列表

List Comprehension用法列举

  • [x*y | x<-[1,2,3] , y<-[1,2,3], x>=2 ,y<=2]
  • [if xmod2 == 0 then "even" else "odd" | x <- [1..10]] 其中10mod2等价于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==4
    round 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"
两种运行程序方法
  1. 直接运行程序runhaskell(or runghc) WC.hs < quux.txt
    若无<quux.txt文件输入,可在命令行中直接输入,如
cmd> runhaskell WC.hs
--line1
--line2
2
  1. 先编译ghc WC.hs生成WC.exe后WC.exe < quux.txt

修改WC.hs,使得可以计算一个文件中的单词个数;再次修改,计算字符个数。

相关文章

网友评论

      本文标题:《Real World Haskell》笔记(1):入门

      本文链接:https://www.haomeiwen.com/subject/ohqchqtx.html