Haskell语言学习笔记(50)Extra
Extra
安装 extra 模块。
$ cabal install extra
Installed extra-1.6
Prelude> :m +Extra
Prelude Extra>
Data.List.Extra String operations
Prelude Extra> lower "This is A TEST"
"this is a test"
Prelude Extra> upper "This is A TEST"
"THIS IS A TEST"
Prelude Extra> trim " hello "
"hello"
Prelude Extra> dropEnd 3 "hello"
"he"
Prelude Extra> takeEnd 3 "hello"
"llo"
Prelude Extra> splitAtEnd 3 "hello"
("he","llo")
Prelude Extra Data.Char> spanEnd isUpper "youRE"
("you","RE")
Prelude Extra Data.Char> spanEnd isUpper "youRE"
("you","RE")
Prelude Extra Data.Char> dropWhileEnd isSpace "foo\n"
"foo"
Prelude Extra> takeWhileEnd even [2,3,4,6]
[4,6]
Prelude Extra> stripSuffix "bar" "foobar"
Just "foo"
Prelude Extra> breakOn "::" "a::b::c"
("a","::b::c")
Prelude Extra> breakOnEnd "::" "a::b::c"
("a::b::","c")
Prelude Extra> splitOn "aaa" "aaaXaaaXaaaXaaa"
["","X","X","X",""]
Prelude Extra> split (== 'a') "aabbaca"
["","","bb","c",""]
Prelude Extra> chunksOf 3 "my test"
["my ","tes","t"]
Data.List.Extra List Basics
Prelude Extra> unsnoc [1,2,3]
Just ([1,2],3)
Prelude Extra> drop1 "abc"
"bc"
Prelude Extra> mconcatMap Data.Monoid.Sum [1,2,3]
Sum {getSum = 6}
Data.List.Extra List operations
Prelude Extra> groupSort [(1,'t'),(3,'t'),(2,'e'),(2,'s')]
[(1,"t"),(2,"es"),(3,"t")]
Prelude Extra> groupSortOn length ["test","of","sized","item"]
[["of"],["test","item"],["sized"]]
Prelude Extra Data.Function> groupSortBy (compare `on` length) ["test","of","sized","item"]
[["of"],["test","item"],["sized"]]
Prelude Extra> nubOrd "this is a test"
"this ae"
Prelude Extra Data.Function> nubOrdBy (compare `on` length) ["a","test","of","this"]
["a","test","of"]
Prelude Extra> nubOrdOn length ["a","test","of","this"]
["a","test","of"]
Prelude Extra> nubOn length ["a","test","of","this"]
["a","test","of"]
Prelude Extra> groupOn length ["test","item","of","sized"]
[["test","item"],["of"],["sized"]]
Prelude Extra> disjoint [1,2,3] [4,5]
True
Prelude Extra> disjoint [1,2,3] [4,1]
False
Prelude Extra> allSame [1,1,2]
False
Prelude Extra> allSame [1,1,1]
True
Prelude Extra> anySame [1,1,2]
True
Prelude Extra> anySame [1,2,3]
False
Prelude Extra> repeatedly (splitAt 3) "my test"
["my ","tes","t"]
Prelude Extra> for [1,2,3] (+1)
[2,3,4]
Prelude Extra> firstJust id [Nothing,Just 3]
Just 3
Prelude Extra> concatUnzip [("a","AB"),("bc","C")]
("abc","ABC")
Prelude Extra> concatUnzip3 [("a","AB",""),("bc","C","123")]
("abc","ABC","123")
Prelude Extra> zipFrom 1 "abc"
[(1,'a'),(2,'b'),(3,'c')]
Prelude Extra> zipWithFrom (+) 1 [3,4,5]
[4,6,8]
Prelude Extra> replace "el" "_" "Hello Bella"
"H_lo B_la"
Haskell语言学习笔记(50)Extra的更多相关文章
- Haskell语言学习笔记(88)语言扩展(1)
ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...
- Haskell语言学习笔记(79)lambda演算
lambda演算 根据维基百科,lambda演算(英语:lambda calculus,λ-calculus)是一套从数学逻辑中发展,以变量绑定和替换的规则,来研究函数如何抽象化定义.函数如何被应用以 ...
- Haskell语言学习笔记(69)Yesod
Yesod Yesod 是一个使用 Haskell 语言的 Web 框架. 安装 Yesod 首先更新 Haskell Platform 到最新版 (Yesod 依赖的库非常多,版本不一致的话很容易安 ...
- Haskell语言学习笔记(20)IORef, STRef
IORef 一个在IO monad中使用变量的类型. 函数 参数 功能 newIORef 值 新建带初值的引用 readIORef 引用 读取引用的值 writeIORef 引用和值 设置引用的值 m ...
- Haskell语言学习笔记(39)Category
Category class Category cat where id :: cat a a (.) :: cat b c -> cat a b -> cat a c instance ...
- Haskell语言学习笔记(72)Free Monad
安装 free 包 $ cabal install free Installed free-5.0.2 Free Monad data Free f a = Pure a | Free (f (Fre ...
- Haskell语言学习笔记(49)ByteString Text
Data.ByteString String 是 [Char] 的同义词,在使用上存在List的惰性所带来的性能问题. 在处理大型二进制文件时,可以使用 ByteString 来代替 String. ...
- Haskell语言学习笔记(44)Lens(2)
自定义 Lens 和 Isos -- Some of the examples in this chapter require a few GHC extensions: -- TemplateHas ...
- Haskell语言学习笔记(38)Lens(1)
Lens Lens是一个接近语言级别的库,使用它可以方便的读取,设置,修改一个大的数据结构中某一部分的值. view, over, set Prelude> :m +Control.Lens P ...
随机推荐
- centos7 lvs keepalived做DNS集群负载
2LVS + keepalived 5 bind dns源站 yum -y install ipvsadm keepalived lvs增加并发 echo "options ip_vs c ...
- base64编码的原理及实现
base64编码的原理及实现 我们的图片大部分都是可以转换成base64编码的data:image. 这个在将canvas保存为img的时候尤其有用.虽然除ie外,大部分现代浏览器都已经支持原生的基于 ...
- asp.net Repeater使用例子,包括分页
<style type="text/css"> .tab{border-collapse:collapse; margin:0 auto;} .tab th ...
- qt ISO C++ forbids declaration of 'XXXX' with no type
error: ISO C++ forbids declaration of 'XXXX' with no type 出现这个错误,一般是由于两个CPP相互都相互包含了对方的头文件造成的,比如: 当 ...
- ESXI 5.5加载 zabbix OVF 3.2.6操作
如果是虚拟机安装ZABBIX,ZABBIX的前台WEB时间,是由虚拟机的BIOS时间决定的. 一. 1.去官方下载vmdk磁盘镜像 链接地址为https://sourceforge.net/proje ...
- 当vcenter是linux版本的时候Sysprep存放路径
为 VMware vCenter Server Appliance 安装 Microsoft Sysprep 工具在从 Microsoft 网站下载并安装 Microsoft Sysprep 工具之后 ...
- [UE4]角色增加挂点、增加枪
人物骨骼增加Socket(骨骼) 增加手持武器预览: 角色蓝图增加组件“Skeletal Mesh”(好像这叫骨骼模型吧),并拖放至人物“Mesh”下面作为子组件. 选中刚建好的“SkeletalMe ...
- API网关Kong系列(四)认证配置
目前根据业务需要先介绍2种认证插件:Key Authentication 及 HMAC-SHA1 认证 Key Authentication 向API添加密钥身份验证(也称为API密钥). 然后,消 ...
- 显示器如何显示一个YUV422格式的图形
记录在开发过程中对知识点的一些理解: 在开发渲染程序的过程中,需要对视屏文件进行解码解码后特效文件的叠加,使用的技术是(FFmpeg+DirectX) 解码出来的视屏数据格式是YUYV,使用Direc ...
- Angular4之常用指令
Angular4指令 NgIf <div *ngIf="false"></div> <!-- never displayed --> <d ...