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 ...
随机推荐
- Redis 主从+哨兵+监控 (centos7.2 + redis 3.2.9 )
环境准备: 192.168.0.2 redis01 主 192.168.0.3 redis02 从 192.168.0.4 redis03 从 Redis 主从搭建 一:下载并安装redis软件 ...
- 代码整洁之道Clean Code 读后感After Reading
1.有意义的命名 名副其实,避免误导 做有意义的区分,简单明了2.函数 短小,职责单一 别重复自己3.注释 用代码来阐述 可怕的废话4.格式 垂直格式,垂直距离,空范围 横向格式,水平对齐,缩进5.错 ...
- 第7章 网络层协议(4)_IGMP协议
4. IGMP协议(Internet Group Management Protocol) 4.1 什么是组播(多播) (1)单播同一个视频要发送90个副本,但支持收看者“快进”和“倒退”. (2)组 ...
- Flume+HBase+Kafka集成与开发
先把flume1.7的源码包下载 http://archive.apache.org/dist/flume/1.7.0/ 下载解压后 我们通过IDEA这个软件来打开这个工程 点击ok后我们选择打开一个 ...
- CS229 6.7 Neurons Networks whitening
PCA的过程结束后,还有一个与之相关的预处理步骤,白化(whitening) 对于输入数据之间有很强的相关性,所以用于训练数据是有很大冗余的,白化的作用就是降低输入数据的冗余,通过白化可以达到(1)降 ...
- redis的键命令
键的命令 查找键,参数支持正则 KEYS pattern 判断键是否存在,如果存在返回1,不存在返回0 EXISTS key [key ...] 查看键对应的value的类型 TYPE key 删除键 ...
- 【python】python与正则 re的主要用到的方法列举
[直接上代码] #coding=utf-8#1.先将正则表达式的字符串形式编译为Pattern实例 #2.使用Pattern实例处理文本并获得匹配结果 #3.最后使用Match实例获得消息,进行其他操 ...
- ELK学习博客
ELK实时日志分析平台环境部署--完整记录 https://www.cnblogs.com/kevingrace/p/5919021.html
- py库: pymysql、 json (mysql数据库)
数据库查询结果,用json返回: #连接数据库 import pymysql print(pymysql.VERSION) conn = pymysql.Connect(host='localhost ...
- py库: xlwt 、xlrd (写读EXCEL文件)
写EXCEL文件 # -*- coding: utf-8 -*- import xlwt book = xlwt.Workbook(encoding = "utf-8", styl ...