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的更多相关文章

  1. Haskell语言学习笔记(88)语言扩展(1)

    ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...

  2. Haskell语言学习笔记(69)Yesod

    Yesod Yesod 是一个使用 Haskell 语言的 Web 框架. 安装 Yesod 首先更新 Haskell Platform 到最新版 (Yesod 依赖的库非常多,版本不一致的话很容易安 ...

  3. Haskell语言学习笔记(20)IORef, STRef

    IORef 一个在IO monad中使用变量的类型. 函数 参数 功能 newIORef 值 新建带初值的引用 readIORef 引用 读取引用的值 writeIORef 引用和值 设置引用的值 m ...

  4. Haskell语言学习笔记(79)lambda演算

    lambda演算 根据维基百科,lambda演算(英语:lambda calculus,λ-calculus)是一套从数学逻辑中发展,以变量绑定和替换的规则,来研究函数如何抽象化定义.函数如何被应用以 ...

  5. Haskell语言学习笔记(39)Category

    Category class Category cat where id :: cat a a (.) :: cat b c -> cat a b -> cat a c instance ...

  6. Haskell语言学习笔记(28)Data.Map

    Map Prelude> import Data.Map as Map Prelude Map> :set -XOverloadedLists Prelude Map> Overlo ...

  7. Haskell语言学习笔记(93)Data.Text

    Data.Text.Read Prelude> :set -XOverloadedStrings Prelude> :m +Data.Text.Read Prelude Data.Text ...

  8. Haskell语言学习笔记(81)Data.Typeable

    Data.Typeable 利用 Data.Typeable,可以打印动态类型信息. class Typeable (a :: k) where typeRep# :: TypeRep a typeR ...

  9. Haskell语言学习笔记(77)Data.HashSet

    安装 unordered-containers $ cabal install unordered-containers Installed unordered-containers-0.2.9.0 ...

随机推荐

  1. spring4 知识点

    1 bean的 创建 1,直接在配置文件里面写一个带有@Bean注解的方法(返回值就是那个bena对象),(name等于 方法名) 2,使用 FactoryBean 接口(三个方法分别是创建,类型,单 ...

  2. POJ3585 Accumulation Degree(二次扫描与换根法)

    题目:http://poj.org/problem?id=3585 很容易想出暴力.那么就先扫一遍. 然后得到了指定一个根后每个点的子树值. 怎么转化利用一下呢?要是能找出当前点的父亲的 “ 不含当前 ...

  3. MySQL 查看编码 排序规则

    查看数据库的排序规则 mysql> show variables like 'collation%'; +----------------------+-------------------+ ...

  4. php 目录操作

    1.打开文件: opendir("文件名称"); 2.读取文件:readdir("文件名称"); <?php $dirname="phpMyAd ...

  5. win7 任务计划运行批处理,不能正常运行,需用绝对路径

    一段批处理在WIN XP下用任务计划可以正常运行: rar.exe u -m3 -s -r -o+ -x*.db -x*.zip -x*.rar zmv9netSrc.rar "Source ...

  6. Servlet容器请求处理

    红色部分为本章所述模块 所讲述的请求流程模块,大家已经很清楚了.那怎么给大家去讲的更清晰,大家理解的更容易呢?当然是,带着问题去学习,吸收或许会更快些啦.:) 开篇之前,给大家提以下几个问题,这些问题 ...

  7. cpu监控之二:dstat

    首先我们使用dstat命令来查看下我们的CPU情况,他能够实时的输出我们的信息, dstat 2 10(每2秒采集一次共采集10次) [test@test pos-gateway]$ dstat Yo ...

  8. [转]C#鼠标拖动任意控件

    C#鼠标拖动任意控件(winform) 分类: c#2011-08-15 22:51 178人阅读 评论(0) 收藏 举报 winformc#userwindowsobjectapi using Sy ...

  9. 你的GAN训练得如何--GAN 的召回率(多样性)和精确率(图像质量)方法评估

    生成对抗网络(GAN)是当今最流行的图像生成方法之一,但评估和比较 GAN 产生的图像却极具挑战性.之前许多针对 GAN 合成图像的研究都只用了主观视觉评估,一些定量标准直到最近才开始出现.本文认为现 ...

  10. express处理跨域问题,中间件 CORS

    CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 1.不用中间件的话可以这样写: app.all('*', func ...