Haskell语言学习笔记(54)Data.Set
Data.Set
Prelude> import Data.Set as Set
Prelude Set> :set -XOverloadedLists
Construction
Prelude Set> empty
fromList []
Prelude Set> singleton 5
fromList [5]
Prelude Set> insert 3 [4,5]
fromList [3,4,5]
Prelude Set> delete 5 [3,4,5]
fromList [3,4]
Operators
Prelude Set> [3,4,5] \\ [4,5,6]
fromList [3]
Query
Prelude Set> Set.null $ []
True
Prelude Set> size [1,2,3]
3
Prelude Set> member 3 [1,2,3]
True
Prelude Set> lookupLT 5 [3, 5]
Just 3
Prelude Set> lookupGE 3 [3, 5]
Just 3
Prelude Set> isSubsetOf [3] [3,5]
True
Combine
Prelude Set> union [3,4,5] [4,5,6]
fromList [3,4,5,6]
Prelude Set> difference [3,4,5] [4,5,6]
fromList [3]
Prelude Set> intersection [3,4,5] [4,5,6]
fromList [4,5]
Filter
Prelude Set> Set.filter even [1,2,3,4]
fromList [2,4]
Prelude Set> partition even [1,2,3,4]
[2,4],fromList [1,3]
Prelude Set> split 3 [1,2,3,4,5]
[1,2],fromList [4,5]
Prelude Set> splitMember 3 [1,2,3,4,5]
[1,2],True,fromList [4,5]
Indexed
Prelude Set> lookupIndex 3 [5,3]
Just 0
Prelude Set> findIndex 3 [5,3]
0
Prelude Set> elemAt 1 [5,3]
5
Prelude Set> deleteAt 1 [5,3]
fromList [3]
Prelude Set> Set.take 2 [1..6]
fromList [1,2]
Prelude Set> Set.drop 2 [1..6]
fromList [3,4,5,6]
Prelude Set> Set.splitAt 2 [1..6]
[1,2],fromList [3,4,5,6]
Map
Prelude Set> Set.map (+2) [1..6]
fromList [3,4,5,6,7,8]
Folds
Prelude Set> Set.foldr (+) 0 [1..6]
21
Prelude Set> Set.foldl' (+) 0 [1..6]
21
Min/Max
Prelude Set> lookupMin [1..6]
Just 1
Prelude Set> findMax [1..6]
6
Prelude Set> deleteMin [1..6]
fromList [2,3,4,5,6]
Prelude Set> deleteFindMax [1..6]
(6,fromList [1,2,3,4,5])
Prelude Set> maxView [1..6]
Just (6,fromList [1,2,3,4,5])
Prelude Set> minView [1..6]
Just (1,fromList [2,3,4,5,6])
Conversion
Prelude Set> toList [1..6]
[1,2,3,4,5,6]
Prelude Set> toAscList [1,5,3]
[1,3,5]
Prelude Set> toDescList [1,5,3]
[5,3,1]
Debugging
Prelude Set> putStrLn $ showTree [1..6]
4
+--2
| +--1
| +--3
+--5
+--|
+--6
Prelude Set> putStrLn $ showTreeWith True True [1..6]
4
|
+--2
| |
| +--1
| |
| +--3
|
+--5
|
+--|
|
+--6
Haskell语言学习笔记(54)Data.Set的更多相关文章
- Haskell语言学习笔记(88)语言扩展(1)
ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...
- Haskell语言学习笔记(69)Yesod
Yesod Yesod 是一个使用 Haskell 语言的 Web 框架. 安装 Yesod 首先更新 Haskell Platform 到最新版 (Yesod 依赖的库非常多,版本不一致的话很容易安 ...
- Haskell语言学习笔记(20)IORef, STRef
IORef 一个在IO monad中使用变量的类型. 函数 参数 功能 newIORef 值 新建带初值的引用 readIORef 引用 读取引用的值 writeIORef 引用和值 设置引用的值 m ...
- Haskell语言学习笔记(79)lambda演算
lambda演算 根据维基百科,lambda演算(英语:lambda calculus,λ-calculus)是一套从数学逻辑中发展,以变量绑定和替换的规则,来研究函数如何抽象化定义.函数如何被应用以 ...
- Haskell语言学习笔记(39)Category
Category class Category cat where id :: cat a a (.) :: cat b c -> cat a b -> cat a c instance ...
- Haskell语言学习笔记(28)Data.Map
Map Prelude> import Data.Map as Map Prelude Map> :set -XOverloadedLists Prelude Map> Overlo ...
- Haskell语言学习笔记(93)Data.Text
Data.Text.Read Prelude> :set -XOverloadedStrings Prelude> :m +Data.Text.Read Prelude Data.Text ...
- Haskell语言学习笔记(81)Data.Typeable
Data.Typeable 利用 Data.Typeable,可以打印动态类型信息. class Typeable (a :: k) where typeRep# :: TypeRep a typeR ...
- Haskell语言学习笔记(77)Data.HashSet
安装 unordered-containers $ cabal install unordered-containers Installed unordered-containers-0.2.9.0 ...
随机推荐
- spring4 知识点
1 bean的 创建 1,直接在配置文件里面写一个带有@Bean注解的方法(返回值就是那个bena对象),(name等于 方法名) 2,使用 FactoryBean 接口(三个方法分别是创建,类型,单 ...
- POJ3585 Accumulation Degree(二次扫描与换根法)
题目:http://poj.org/problem?id=3585 很容易想出暴力.那么就先扫一遍. 然后得到了指定一个根后每个点的子树值. 怎么转化利用一下呢?要是能找出当前点的父亲的 “ 不含当前 ...
- MySQL 查看编码 排序规则
查看数据库的排序规则 mysql> show variables like 'collation%'; +----------------------+-------------------+ ...
- php 目录操作
1.打开文件: opendir("文件名称"); 2.读取文件:readdir("文件名称"); <?php $dirname="phpMyAd ...
- win7 任务计划运行批处理,不能正常运行,需用绝对路径
一段批处理在WIN XP下用任务计划可以正常运行: rar.exe u -m3 -s -r -o+ -x*.db -x*.zip -x*.rar zmv9netSrc.rar "Source ...
- Servlet容器请求处理
红色部分为本章所述模块 所讲述的请求流程模块,大家已经很清楚了.那怎么给大家去讲的更清晰,大家理解的更容易呢?当然是,带着问题去学习,吸收或许会更快些啦.:) 开篇之前,给大家提以下几个问题,这些问题 ...
- cpu监控之二:dstat
首先我们使用dstat命令来查看下我们的CPU情况,他能够实时的输出我们的信息, dstat 2 10(每2秒采集一次共采集10次) [test@test pos-gateway]$ dstat Yo ...
- [转]C#鼠标拖动任意控件
C#鼠标拖动任意控件(winform) 分类: c#2011-08-15 22:51 178人阅读 评论(0) 收藏 举报 winformc#userwindowsobjectapi using Sy ...
- 你的GAN训练得如何--GAN 的召回率(多样性)和精确率(图像质量)方法评估
生成对抗网络(GAN)是当今最流行的图像生成方法之一,但评估和比较 GAN 产生的图像却极具挑战性.之前许多针对 GAN 合成图像的研究都只用了主观视觉评估,一些定量标准直到最近才开始出现.本文认为现 ...
- express处理跨域问题,中间件 CORS
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 1.不用中间件的话可以这样写: app.all('*', func ...