string - Haskell 中的 Data.Text 常量
问题描述
在 Data.Text 的文档中,有replace "oo" "foo" "oo"
. 但是,当我尝试运行它时,它告诉我函数替换需要文本,但得到了字符串。现在,当然,我可以pack
在每个常量前面使用将字符串转换为文本类型,但这很不方便。有没有办法像在文档中那样编写文本常量?
解决方案
Data.Text
所有示例的文档都OverloadedStrings
启用了扩展。这将为所有字符串文字添加一个隐式fromString
函数调用。
例如:
$ ghci -XOverloadedStrings
GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help
Loaded GHCi configuration from /home/kommusoft/.ghc/ghci.conf
Prelude> import Data.Text
Prelude Data.Text> replace "oo" "foo" "oo"
"foo"
或者您可以将其作为编译指示添加到您的 Haskell 文件中:
{-# LANGUAGE OverloadedStrings #-}
import Data.Text
foo = replace "oo" "foo" "oo"
通过使用OverloadedString
s,您可以创建自己的与字符串文字一起使用的类型。例如,您可以创建一个类型:
import Data.String
newtype SpecialString = SpecialString String
instance IsString SpecialString where
fromString = SpecialString
现在您可以使用字符串文字,这些可以根据上下文转换为SpecialString
.
推荐阅读
- html - 标题后的部分与标题对齐?
- python - 如何在 Windows power shell 中运行 tensorflow?
- height - 如何以编程方式将 LinearLyout 的高度设置为 matchparent
- laravel-5 - Laravel - 用 table2 列更新 table1 列
- rstudio - 在 RStudio 中禁用文件更改检查
- c - 设置共享变量时应该使用临界区还是内存屏障?
- javascript - 为 ReactJS 对象动态添加一个 prop
- bash - {1..$n} 的大括号扩展
- latex - 如何在我的机器上只安装 cmap.sty 所需的包
- java - 单核细胞增多症
和通量 作为函数中的参数