Haskell
杨鑫newlfe
算法就是我的灵魂
展开
-
Haskell学习笔记 --- 基础语法篇一
Haskell学习笔记 --- 基础语法篇一原创 2017-06-07 14:29:34 · 1235 阅读 · 0 评论 -
Haskell --- 德州区间Range基本操作
德州区间 Range遍历1到20[1..20]遍历a到z['a'..'z']还可以设置步长[2,4..20] 代表的是 2 与 4 的差距,然后从2开始到20由于浮点数定义的原因:ghci> [0.1, 0.3 .. 1] [0.1,0.3,0.5,0.7,0.8999999999999999,1.0999999999999999] 因此在Range中避免使用...原创 2018-09-28 17:23:45 · 608 阅读 · 0 评论 -
Haskell --- flod函数中 flodl 和 flodr 与 foldl1 和 foldr1
一个fold取一个二元函数,一个初始值(我喜欢管它叫累加值)和一个需要fold(折叠)的list。这个二元函数有两个参数,即累加值和list的首项(或尾项),返回值是新的累加值。然后,以新的累加值和新的list首项调用该函数,如是继续。到list遍历完毕时,只剩下一个累加值,也就是最终的结果。foldl -- 也叫做左折叠。它从list的左端开始折叠,用初始值和list的头部调用这二元函数,...原创 2018-10-06 17:34:49 · 1497 阅读 · 0 评论 -
Haskell --- 递归函数思想
我们已经递不少归了,也许你已经发觉了其中的固定模式:先定义一个边界条件,再定义个函数,让它从一堆元素中取一个并做点事情后,把余下的元素重新交给这个函数。 这一模式对List、Tree等数据结构都是适用的。例如,sum函数就是一个List头部与其尾部的sum的和。一个List的积便是该List的头与其尾部的积相乘的积,一个List的长度就是1与其尾部长度的和. 等等再者就是边界条件。一般而言,边...原创 2018-10-06 15:59:12 · 659 阅读 · 0 评论 -
Haskell --- 实现快读排序
类型声明quicksort :: (Ord a) => [a] -> [a]边界条件:空List。排过序的空List还是空List。接下来便是算法的定义:排过序的List就是令所有小于等于头部的元素在先(它们已经排过了序), 后跟大于头部的元素(它们同样已经拍过了序)。 quicksort :: (Ord a) => [a] -> [a] quic...原创 2018-10-06 15:57:32 · 1019 阅读 · 0 评论 -
Haskell --- 利用递归实现选出List中最大值
-- 在命令式风格中:这一函数该怎么实现。很可能你会设一个变量来存储当前的最大值,然后用循环遍历该 List,若存在比这个值更大的元素,则修改变量为这一元素的值。到最后,变量的值就是运算结果。唔!描述如此简单的算法还颇费了点口舌呢!-- 递归的思路:我们先定下一个边缘条件,即处理单个元素的List时,返回该元素。如果该List的头部大于尾部的最大值,我们就可以假定较长的List的最大值就...原创 2018-10-06 15:43:25 · 1831 阅读 · 0 评论 -
Haskell --- 常见的几种类型
Haskell几种常见的类型Int 整数,7可以是Int上限一般是214748364下限是-214748364。Integer 无界限的整数factorial :: Integer -> Integer factorial n = product [1..n]Float 单精度浮点数 小数点后六位circumference :: Float -> Float...原创 2018-10-04 17:43:50 · 1214 阅读 · 0 评论 -
Haskell --- 数据类型的检测
由于Haskell语言是静态类型的编程语言,这里使用的目的是使用检测一个变量的类型使用:t命令后跟任何可用的表达式 ghci> :t 'a' 'a' :: Char ghci> :t True True :: Bool ghci> :t "HELLO!" "HELLO!" :: [Char] ghci> :t (True, 'a') ...原创 2018-10-04 17:32:45 · 935 阅读 · 0 评论 -
Haskell --- tuple 操作
// fst返回一个序对的首项。ghci> fst (8,11) 8 ghci> fst ("Wow", False) "Wow"// snd返回序对的尾项。 (tuple只有两个数,因此second,snd)ghci> snd (8,11) 11 ghci> snd ("Wow", False) False// 有个函数很cool,它...原创 2018-10-04 17:28:46 · 1779 阅读 · 0 评论 -
Haskell --- List Comprehension List集合操作
// 生成x在区间内的2倍值ghci> [x*2 | x <- [1..10]] [2,4,6,8,10,12,14,16,18,20]// 生成x在区间内的2倍值,并且大雨12的数[x * 2 | x <- [1..10], x * 2 >= 12] // 生成50到100之间,对7做除法余数是3的数 ghci> [ x | x <- [...原创 2018-10-04 16:39:38 · 1916 阅读 · 0 评论 -
Haskell --- 纯函数编程语言
Haskell是一种纯函数式编程语言(Purely Functional Programming Language)。 在函数式编程语言中,变量一旦赋值,就不能改变了,你已经声明了a式5,就不能改遍主意。 在纯函数式编程语言中,函数没有任何的副作用。函数式编程语言中的函数能做的唯一一件事情,就是求值并且返回结果。一开始可能觉得这样子会受到限制,然而好处也正源于此;若以相同的...原创 2018-09-25 01:47:43 · 1939 阅读 · 0 评论 -
函数式编程笔记
又来总结一篇函数式编程说说我对函数是编程的几个理解:1.数学中函数在数学中为两集合间的一种对应关系:输入值集合中的每项元素皆能对应唯一一项输出值集合中的元素。例如实数x对应到其平方x2的关系就是一个函数,若以3作为此函数的输入值,所得的输出值便是9。2.函数是"第一等公民"所谓"第一等公民"(first class),指的是函数与其他原创 2018-02-06 17:13:59 · 306 阅读 · 0 评论 -
Haskell学习笔记 --- 理解 max :: (Ord a) => a -> (a -> a)
Haskell学习笔记 --- 理解 max :: (Ord a) => a -> (a -> a)原创 2017-06-09 11:29:35 · 3194 阅读 · 0 评论 -
Haskell学习笔记 --- 函数式编程中的柯里化
Haskell学习笔记 --- 函数式编程中的柯里化原创 2017-06-09 11:14:32 · 1497 阅读 · 0 评论 -
Haskell学习笔记 --- GHCi中如何敲入多行代码
Haskell学习笔记 --- GHCi中如何敲入多行代码原创 2017-06-08 18:36:47 · 3144 阅读 · 0 评论 -
Haskell学习笔记 --- 基础语法篇二
Haskell学习笔记 --- 基础语法篇二原创 2017-06-07 16:45:00 · 874 阅读 · 0 评论 -
大佛代码注释
效果图: /** * _ooOoo_ * o8888888o * 88" . "88 * (| -_- |) * ...原创 2019-01-11 18:18:53 · 5848 阅读 · 0 评论