Haskell语言学习笔记(86)字符串格式化与插值
String 的格式化
- Text.Printf
这个模块用来处理字符串格式化。 - printf :: PrintfType r => String -> r
printf 用于格式化字符串,注意这个函数的返回类型是多态的。
Prelude> :m +Text.Printf
Prelude Text.Printf> printf "%s, %d, %.4f\n" "hello" 123 pi
hello, 123, 3.1416
Prelude Text.Printf> :t printf "%s, %d, %.4f\n" "hello" 123 pi
printf "%s, %d, %.4f" "hello" 123 pi :: PrintfType t => t
Prelude Text.Printf> putStr $ printf "%s, %d, %.4f\n" "hello" 123 pi
hello, 123, 3.1416
Prelude Text.Printf> printf "%s, %d, %.4f\n" "hello" 123 pi :: IO()
hello, 123, 3.1416
Prelude Text.Printf> printf "%s, %d, %.4f\n" "hello" 123 pi :: String
"hello, 123, 3.1416\n"
Prelude Text.Printf> f = printf "%s, %d, %.4f\n" :: String -> Int -> Double -> String
Prelude Text.Printf> f "hello" 123 pi
"hello, 123, 3.1416\n"
String 的插值
安装 interpolate
$ cabal install interpolate
Installed interpolate-0.2.0
Prelude> :set -XQuasiQuotes
Prelude> import Data.String.Interpolate
Prelude Data.String.Interpolate>
interpolate 是一个处理字符串插值的模块。
该模块使用语言扩展 QuasiQuotes,#{...} 是插值部分。
Prelude Data.String.Interpolate> let name = "Marvin"
Prelude Data.String.Interpolate> putStrLn [i|name: #{name}|]
name: Marvin
Prelude Data.String.Interpolate> let age = 23
Prelude Data.String.Interpolate> putStrLn [i|age: #{age}|]
age: 23
Prelude Data.String.Interpolate> let profession = "\955-scientist"
Prelude Data.String.Interpolate> putStrLn [i|profession: #{unwords [name, "the", profession]}|]
profession: Marvin the λ-scientist
Text 的格式化
安装 formatting
$ cabal install formatting
Installed formatting-6.3.6
Prelude> :set -XOverloadedStrings
Prelude> import Formatting
Prelude Formatting>
formatting 是一个格式化 Text 字符串的库。
Prelude Formatting> format ("Person's name is " % text % ", age is " % hex) "Dave" 54
"Person's name is Dave, age is 36"
Prelude Formatting> sformat ("Person's name is " % stext % ", age is " % int) "Dave" 36
"Person's name is Dave, age is 36"
这里 format 和 sformat 分别用于结果为 lazy Text 和 strict Text 的格式化。
text, stext, hex, int 都是预定义的格式化占位符,分别代表参数为 lazy Text,strict Text,十六进制整数以及十进制整数类型。
(%) 则用于粘合字符串和格式化占位符。
Haskell语言学习笔记(86)字符串格式化与插值的更多相关文章
- C语言学习笔记---3.字符串格式化输入输出
1.C语言字符串 字符串(character string)是一个或多个字符的序列,例如:"Zing went the strings of my heart!" C语言没有专门用 ...
- 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 ...
- R语言学习笔记:字符串处理
想在R语言中生成一个图形文件的文件名,前缀是fitbit,后面跟上月份,再加上".jpg",先不百度,试了试其它语言的类似语法,没一个可行的: C#中:"fitbit&q ...
- Haskell语言学习笔记(84)Concurrent
Control.Concurrent Prelude> import Control.Concurrent Prelude Control.Concurrent> Control.Conc ...
- Haskell语言学习笔记(72)Free Monad
安装 free 包 $ cabal install free Installed free-5.0.2 Free Monad data Free f a = Pure a | Free (f (Fre ...
随机推荐
- [UE4]关于分支Sequence和条件分支的组合用法
当需要不管条件语句是否成立的后面都需要执行的语句,可以使用“Sequence”来分支,达到简化蓝图连线的目的.如下图所示:
- [UE4]虚幻4蓝图使用小技巧
不得不说,虚幻的蓝图系统还是非常方便强大的,大大的提高了开发效率.蓝图是一个很成熟的系统,也就有很多隐藏的小技巧,这些技巧谈不上多高深,却可以使人们在使用蓝图时更加得心应手,更加喜爱这个“可视化编程“ ...
- VMware同时使用三种网络模式的虚拟机,测试连通性
参考资料: 虚拟机中桥接不自动分配IP与设置静态IP问题: https://blog.csdn.net/u013187057/article/details/80579211 腾讯课堂: https: ...
- Abp IRepository 方法解释(1)
// // 摘要: // This interface is implemented by all repositories to ensure implementation of ...
- centos找不到vim命令
linux系统执行vim命令时,提示centos -bash : vim:command not found 这个时候需要检查vim编辑器是否安装: 输入rpm -qa|grep vim命令, ...
- Android Notification通知栏的使用,通知栏在Android8.0系统不显示的问题;
1.正常使用通知栏: /** * 创建通知栏管理工具 */ NotificationManager notificationManager = (NotificationManager) getSys ...
- Solr中使用游标进行深度分页查询以提高效率(适用的场景下)
通常,我们的应用系统,如果要做一次全量数据的读取,大多数时候,采用的方式会是使用分页读取的方式,然而 分页读取的方式,在大数据量的情况下,在solr里面表现并不是特别好,因为它随时可能会发生OOM的异 ...
- lunix salt 用法
红蜘蛛软件 c/s client : 学生端是客户端 ,装了红蜘蛛客户端-学生端 server端: 教师机 ,装了红蜘蛛软件-教师端 教师机,只能管理, 教师机和学生机,相互通信,相互知道的情 ...
- mysql大纲
一.概述 1.1 关系型数据.非关系型数据.半关系型数据 1.2 关系型数据库和非关系型数据库 1.3 发展史 二.MySQL组件和安装 三.数据库语言和主要概念 3.1 数据库语言 DML.DDL. ...
- iOS第三方登录qq
http://blog.sina.com.cn/s/blog_7b9d64af0101e5vj.html