Data.Text.Read

Prelude> :set -XOverloadedStrings
Prelude> :m +Data.Text.Read
Prelude Data.Text.Read> decimal "123"
Right (123,"")
Prelude Data.Text.Read> decimal "abc"
Left "input does not start with a digit"
Prelude Data.Text.Read> rational "123.4"
Right (123.4,"")
Prelude Data.Text.Read> signed double "-3.4"
Right (-3.4,"")
decimal :: Integral a => Reader a
type Reader a = IReader Text a
type IReader t a = t -> Either String (a, t)
  • Data.Text.Read 中的函数用于解析 Text 类型的字符串,将其装换为数值类型。
  • decimal 函数负责解析整数值,它接收一个 Text 类型的字符串作为参数,返回 Either 类型的值。

    成功时返回一个二元组,字符串所包含的数值以及剩余的字符串

    失败时返回错误信息:该输入不以数字开头
  • rational 函数与 decimal 相类似,它负责解析有理数的值。

Data.Text.IO

Data.Text.IO 模块负责 Text 的输入和输出。

Prelude> :set -XOverloadedStrings
Prelude> import qualified Data.Text.IO as TIO
Prelude TIO> TIO.putStrLn "Хорошо!"
Хорошо!
Prelude TIO> TIO.putStrLn "哈斯克尔7.6.1的力量"
哈斯克尔7.6.1的力量
Prelude TIO> TIO.putStrLn "感じる"
感じる

Data.Text.Encoding

Prelude> :set -XOverloadedStrings
Prelude> :m +Data.Text
Prelude Data.Text> :m +Data.Text.Encoding
Prelude Data.Text Data.Text.Encoding> encodeUtf8 "Хорошо!"
"\208\165\208\190\209\128\208\190\209\136\208\190!"
Prelude Data.Text Data.Text.Encoding> encodeUtf8 "哈斯克尔7.6.1的力量"
"\229\147\136\230\150\175\229\133\139\229\176\148\&7.6.1\231\154\132\229\138\155\233\135\143"
Prelude Data.Text Data.Text.Encoding> encodeUtf8 "感じる"
"\230\132\159\227\129\152\227\130\139"
Prelude Data.Text Data.Text.Encoding> import qualified Data.Text.IO as TIO
Prelude Data.Text Data.Text.Encoding TIO> TIO.putStrLn $ decodeUtf8 "\230\132\159\227\129\152\227\130\139"
感じる

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

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

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

  2. Haskell语言学习笔记(49)ByteString Text

    Data.ByteString String 是 [Char] 的同义词,在使用上存在List的惰性所带来的性能问题. 在处理大型二进制文件时,可以使用 ByteString 来代替 String. ...

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

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

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

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

  5. Haskell语言学习笔记(90)Default

    安装 data-default-class $ cabal install data-default-class Installed data-default-class-0.1.2.0 Prelud ...

  6. Haskell语言学习笔记(80)req

    req req 是一个好用,类型安全,可扩展,上层的HTTP客户端的库. $ cabal install req Installed req-1.1.0 Prelude> :m +Network ...

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

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

  8. Haskell语言学习笔记(66)Aeson

    Data.Aeson 安装 aeson $ cabal install aeson Installed aeson-1.2.3.0 Prelude> :m +Data.Aeson Prelude ...

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

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

随机推荐

  1. 编写一个简单的基于jmespath 的prometheus exporter

    目的很简单,因为系统好多监控指标是通过json 暴露的,并不是标准的prometheus metrics 格式,处理方法 实际上很简单,我们可以基于jsonpath 解析json数据,转换为prome ...

  2. lua 5.3最简单plugin编写

    #include <windows.h> #include "lauxlib.h" /* Pop-up a Windows message box with your ...

  3. dubbo 用来做什么

    1.各个独立app之间的通信问题怎么解决? 2.怎么做到统一调度.协调处理. 3.如果计费模块是并发最大的模块,但是其他模块并发不是很大.则需要对计费进行负载均衡,怎么实现?

  4. 继承RelativeLayout 自定义布局

    public class HomeToolbarView extends RelativeLayout { TextView tvTitle; public HomeToolbarView(Conte ...

  5. C# Directory.Exists() 文件存在但返回一直为false

    备注:这是一个低级错误,起始真正的原因不是访问权限的问题. 真正的原因是:这个程序要读取远程电脑上共享文件夹里的文件,但是没有远程访问代码,导致找不到相关的目录.所以才报错! 查询一个文件,但程序突然 ...

  6. 二叉排序树插入C语言版 递归步骤理解

    //二叉排序树 插入 (纯C语言实现) BTNode * BSTInsert2(BTNode *bt,int key){ //为什么纯C语言实现中 if(bt==NULL){ //要写成 bt-> ...

  7. iOS移动开发CoreDate讲解

    ----欢迎------- 在移动端开发,数据持久化保存是基本要素,没钱在2014年之后退出了coredate,本持久化基于oc作为开发,方便程序人员操作.与SQL数据库,MySQL相比,优点颇多. ...

  8. 文鹏教育_jmeter培训_逻辑控制器_循环取样器

    软件测试高端专家培训 QQ 讨论群498721021 网站http://www.szwpinfo.com   深圳文鹏教育jmeter 性能测试讲义 一.ForEach控制器在jmeter菜单中的位置 ...

  9. POJ2159 Ancient Cipher

    POJ2159 Ancient Cipher Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 38430   Accepted ...

  10. postgresql 创建gin索引

    1.创建gin类型的索引 postgresql 创建gin索引遇到的问题:1.ERROR: operator class "gin_trgm_ops" does not exist ...