Data.Sequence

Prelude> import Data.Sequence as Seq
Prelude Seq> :set -XOverloadedLists
Prelude Seq>

Construction

Prelude Seq> empty
fromList []
Prelude Seq> singleton 3
fromList [3]
Prelude Seq> 3 <| [4,5]
fromList [3,4,5]
Prelude Seq> [4,5] |> 6
fromList [4,5,6]
Prelude Seq> [3,4] >< [5,6]
fromList [3,4,5,6]

Repetition

Prelude Seq> Seq.replicate 3 3
fromList [3,3,3]
Prelude Seq> Seq.replicateA 3 (Just 3)
Just [3,3,3]
Prelude Seq> Seq.replicateM 3 (Just 3)
Just [3,3,3]
Prelude Seq> cycleTaking 9 [3,4,5]
fromList [3,4,5,3,4,5,3,4,5]

Iterative construction

Prelude Seq> iterateN 5 (+1) 1
fromList [1,2,3,4,5]
Prelude Seq> unfoldr (\b -> if b < 10 then Just (b, b+1) else Nothing) 1
fromList [1,2,3,4,5,6,7,8,9]

Queries

Prelude Seq> Seq.null []
True
Prelude Seq> Seq.length [1,2,3]
3

Views

Prelude Seq> viewl [1,2,3]
1 :< fromList [2,3]
Prelude Seq> viewr [1,2,3]
fromList [1,2] :> 3

Scans

Prelude Seq> Seq.scanl (+) 0 [1,2,3]
fromList [0,1,3,6]
Prelude Seq> Seq.scanl1 (+) [1,2,3]
fromList [1,3,6]
Prelude Seq> Seq.scanr (+) 0 [1,2,3]
fromList [6,5,3,0]
Prelude Seq> Seq.scanr1 (+) [1,2,3]
fromList [6,5,3]

Sublists

Prelude Seq> Seq.tails [1..6]
fromList [fromList [1,2,3,4,5,6],fromList [2,3,4,5,6],fromList [3,4,5,6],fromList [4,5,6],fromList [5,6],fromList [6],fromList []]
Prelude Seq> Seq.inits [1..6]
fromList [fromList [],fromList [1],fromList [1,2],fromList [1,2,3],fromList [1,2,3,4],fromList [1,2,3,4,5],fromList [1,2,3,4,5,6]]
Prelude Seq> chunksOf 2 [1..6]
fromList [fromList [1,2],fromList [3,4],fromList [5,6]]
Prelude Seq> takeWhileL even [2,4,5,6,8]
fromList [2,4]
Prelude Seq> takeWhileR even [2,4,5,6,8]
fromList [6,8]
Prelude Seq> dropWhileL even [2,4,5,6,8]
fromList [5,6,8]
Prelude Seq> dropWhileR even [2,4,5,6,8]
fromList [2,4,5]
Prelude Seq> spanl even [2,4,5,6,8]
[2,4],fromList [5,6,8]
Prelude Seq> spanr even [2,4,5,6,8]
[6,8],fromList [2,4,5]
Prelude Seq> breakl even [2,4,5,6,8]
[],fromList [2,4,5,6,8]
Prelude Seq> breakr even [2,4,5,6,8]
[],fromList [2,4,5,6,8]
Prelude Seq> Seq.partition even [2,4,5,6,8]
[2,4,6,8],fromList [5]
Prelude Seq> Seq.filter even [2,4,5,6,8]
fromList [2,4,6,8]

Sorting

Prelude Seq Data.Function> Seq.sort ["one","two","three","four"]
fromList ["four","one","three","two"]
Prelude Seq Data.Function> Seq.sortBy (compare `on` Prelude.length) ["one","two","three","four"]
fromList ["one","two","four","three"]
Prelude Seq Data.Function> unstableSort ["one","two","three","four"]
fromList ["four","one","three","two"]
Prelude Seq Data.Function> unstableSortBy (compare `on` Prelude.length) ["one","two","three","four"]
fromList ["one","two","four","three"]

Indexing

Prelude Seq> Seq.lookup 3 [1..6]
Just 4
Prelude Seq> [1..6] !? 3
Just 4
Prelude Seq> [1..6] `index` 3
4
Prelude Seq> adjust (+1) 3 [1..6]
fromList [1,2,3,5,5,6]
Prelude Seq> update 3 1 [1..6]
fromList [1,2,3,1,5,6]
Prelude Seq> Seq.take 3 [1..6]
fromList [1,2,3]
Prelude Seq> Seq.drop 3 [1..6]
fromList [4,5,6]
Prelude Seq> insertAt 3 3 [1..6]
fromList [1,2,3,3,4,5,6]
Prelude Seq> deleteAt 3 [1..6]
fromList [1,2,3,5,6]
Prelude Seq> Seq.splitAt 3 [1..6]
[1,2,3],fromList [4,5,6]
Prelude Seq> elemIndexL 3 [1,2,3,3,3,4,5]
Just 2
Prelude Seq> elemIndexL 3 [1,2,3,3,6,3,3,4,5]
Just 2
Prelude Seq> elemIndicesL 3 [1,2,3,3,6,3,3,4,5]
[2,3,5,6]
Prelude Seq> elemIndexR 3 [1,2,3,3,6,3,3,4,5]
Just 6
Prelude Seq> elemIndicesR 3 [1,2,3,3,6,3,3,4,5]
[6,5,3,2]
Prelude Seq> findIndexL even [1,2,3,3,6,3,3,4,5]
Just 1
Prelude Seq> findIndicesL even [1,2,3,3,6,3,3,4,5]
[1,4,7]
Prelude Seq> findIndexR even [1,2,3,3,6,3,3,4,5]
Just 7
Prelude Seq> findIndicesR even [1,2,3,3,6,3,3,4,5]
[7,4,1]

Folds

Prelude Seq> foldMapWithIndex (\n a -> fmap (+n) a) [[1],[2]]
[1,3]
Prelude Seq> foldlWithIndex (\a b c -> a+b+c) 0 [1..3]
9
Prelude Seq> foldrWithIndex (\a b c -> a+b+c) 0 [1..3]
9

Transformations

Prelude Seq> mapWithIndex (+) [1..3]
fromList [1,3,5]
Prelude Seq> traverseWithIndex (\a b -> [b+a,b+a+1]) [1..3]
[fromList [1,3,5],fromList [1,3,6],fromList [1,4,5],fromList [1,4,6],fromList [2,3,5],fromList [2,3,6],fromList [2,4,5],fromList [2,4,6]]
Prelude Seq> Seq.reverse [1..4]
fromList [4,3,2,1]
Prelude Seq> Seq.intersperse 9 [1..3]
fromList [1,9,2,9,3]

Zips

Prelude Seq> Seq.zip [1..3] [1..3]
fromList [(1,1),(2,2),(3,3)]
Prelude Seq> Seq.zipWith (*) [1..3] [1..3]
fromList [1,4,9]

Haskell语言学习笔记(53)Data.Sequence的更多相关文章

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

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

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

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

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

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

  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语言学习笔记(48)Data.Tuple

    Data.Tuple fst :: (a,b) -> a fst (x,_) = x snd :: (a,b) -> b snd (_,y) = y curry :: ((a, b) -& ...

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

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

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

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

随机推荐

  1. php生成迷宫和迷宫寻址算法实例

    较之前的终于有所改善.生成迷宫的算法和寻址算法其实是一样.只是一个用了遍历一个用了递归.参考了网上的Mike Gold的算法. <?php //zairwolf z@cot8.com heade ...

  2. Angular 4 http通讯 解决服务器参数无法接收问题

    1.导入 import { Component, OnInit } from '@angular/core'; import {Observable} from 'rxjs/Observable'; ...

  3. 关于hadoop集群管理系统搭建的规划说明

    Hadoop集群管理系统搭建是每个入门级新手都非常头疼的事情,因为你可能花费了很久的时间在搭建运行环境,最终却不知道什么原因无法创建成功.但对新手来说,运行环境搭建不成功的概率还蛮高的. 在之前的分享 ...

  4. Debug---Eclipse断点调试基础

    1.进入debug模式(基础知识列表)1.设置断点 2.启动servers端的debug模式 3.运行程序,在后台遇到断点时,进入debug调试状态 ========================= ...

  5. Mac 下 IDEA 中 SpringBoot 如何利用 DevTool 开启热部署

    一.首先 pom.xml 中  依赖 和 构建 部分 二.IDEA 配置 注意这一步一定不要改错地方,认准 IntelliJ IDEA -> Preferences… 三.退出 IDEA 编辑器 ...

  6. ghost系统下,C#获取时间带星期几的解决办法

    cmd   regedit打开注册表,进入到[HKEY_USERS\.DEFAULT\Control Panel\International]  ,然后1.将键 sDate 的值由 / 改为 - 2. ...

  7. Linux 期中架构 inotify

    全网备份数据同步方案 备份网站内部人员信息  不能解决外部(人员)上传数据的备份 定时任务最短执行的周期为一分钟,采用定时任务方式,有时可能造成一分钟内的数据丢失 因此对于重要数据需要采用实时同步的方 ...

  8. 1085 Perfect Sequence (25 分)

    1085 Perfect Sequence (25 分) Given a sequence of positive integers and another positive integer p. T ...

  9. linux read 系统调用剖析

    https://www.ibm.com/developerworks/cn/linux/l-cn-read/ MT注:原文图1与Understanding the Linux Kernel, 3rd ...

  10. 开发组件:REST API

    REST API 最佳入门指南 https://blog.csdn.net/px01ih8/article/details/78674685