- Haskell 是纯函数式的(不能赋值,引用透明)
- Haskell 是 lazy 的
- Haskell 是静态类型的
- Haskell 支持类型推导
-
:l myfunctions
可以加载同目录的 myfunctions.hs,且可以重复执行 -
:set prompt "ghci> "
可以改 prompt:set prompt "\ESC[0;37m%s\n\ESC[1;91mλ \ESC[m"
- putStrLn 可以打印出中文字符串
第 1 章
-
5 * -3
要写成5 * (-3)
,不然报错 - 布尔用 True 和 False
-
1 + '1'
会报错,5 + 0.4
不报错,因为 5 也可以被看作 5.0
函数
- Haskell 中有一些中缀函数,如 * 和 +
- 只要以特殊字符命名函数,即可自动将它视为中缀函数。 Miran Lipovaca. Haskell趣学指南(异步图书) (新锐编程语言集萃) (p. 111). 人民邮电出版社. Kindle 版本.
- Haskell 大部分属于前缀函数,如
succ 8 min 1 2 max 1 2 div 9 3
- 函数调用的优先级最高,
succ 9 * 10
等价与(succ 9) * 10
- 后缀可以变中缀:
div 9 3
可以改成9 `div` 3
- 单参数函数
doubleMe x = x + x
- 双参数函数
doubleUs x y = x * 2 + y * 2
- 函数定义没有先后顺序的概念
- 条件语句
if <condition> then <exp> else <exp>
不能省略 else - 条件语句是表达式而不是语句,总是有返回值
- 函数名可以包含
'
字符,一般以'
结尾的函数是非惰性求值版本,也叫严格求值 - 函数名不能以大写字母开头,因为大写字母开头的是类型
- 没有参数的函数被称为定义或者名字,如
a = 1
列表
- 列表是单类型 homogeneous 的数据结构,只能存储类型相同的元素,不能储存类型不同的元素
-
a = [1,2,3]
- 使用
++
可以拼接两个列表,但是它会遍历第一个列表 -
"hello"
是['h','e','l','l','o']
的语法糖 - 使用 Cons 运算符
:
可以在列表头部插入一个元素1:[2,3]
-
[1,2]
是1:2:[]
的语法糖 - 按索引获取值可以用
!!
符号:[1,2,3] !! 0
值为 1,索引越界会报错 -
[3, 2, 1] > [2, 1, 0]
值为 True - 更多列表操作:
head/tail/last/init/length/null/reverse/task 3/drop 3/maximum/minimum/sum/product求积
-
head []
报错 -
4 `elem` [3,4,5]
值为 True -
[1..20]
生成 1 到 20 这 20 个数字组成的列表 -
['a'..'z']
/['K'..'Z']
-
[2,4..20]
生成 [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] -
[20..1]
会得到空列表,应该写成[20,19..1]
-
take 24 [13, 26..]
-
cycle [1, 2, 3]
会对列表进行无限循环,得到 1,2,3,1,2,3,1,2,3... 组成的列表 -
repeat 5
会得到由 5 组成的无限列表 -
repeat 3 10
会得到 [10,10,10]
列表推导式
-
[x* 2 | x <- [1.. 10]]
得到 [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] -
[x* 2 | x <- [1.. 10], x>5, filter2, filter3]
可以对 x 进行过滤 -
[ x* y | x <-[1, 3, 5], y <- [2, 4, 6]]
得到长度为 9 的列表 [2,4,6,6,12,18,10,20,30] -
[ x* y | x <-[1, 3, 5], y <- [2, 4, 6], x* y > 10]
得到 [12,18,20,30] -
length' xs = sum [1 | _ <- xs]
可以使用这个 length' 函数求列表的长度 - 还能嵌套:
ghci> xxs = [[1, 3, 5, 2, 3, 1, 2, 4, 5],[ 1, 2, 3, 4, 5, 6, 7, 8, 9],[ 1, 2, 4, 2, 1, 6, 3, 1, 3, 2, 3, 6]] ghci> [ [ x | x <- xs, even x ] | xs <- xxs] [[2, 2, 4],[ 2, 4, 6, 8],[ 2, 4, 2, 6, 2, 6]] 复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
大数据时代小数据分析
屈泽中 / 电子工业出版社 / 2015-7-1 / 69.00元
《大数据时代小数据分析》是一本大数据时代下进行小数据分析的入门级教材,通过数据分析的知识点,将各类分析工具进行串联和对比,例如:在进行线性规划的时候可以选择使用Excel或LINGO或Crystal Ball。工具的应用难易结合,让读者循序渐进地学习相关工具。JMP和Mintab用来分析数据,分析的结果使用Excel、LINGO、Crystal Ball来建立数据模型,最后使用Xcelsius来动......一起来看看 《大数据时代小数据分析》 这本书的介绍吧!
XML、JSON 在线转换
在线XML、JSON转换工具
正则表达式在线测试
正则表达式在线测试