在Data.Text的文档中,有replace "oo" "foo" "oo"
等例子。 .但是,当我尝试运行它时,它告诉我函数 replace 需要 Text,但得到 String。现在,当然,我可以使用 pack
在每一个常量前面把Strings 变成Text 类型,但是这样比较不方便。有没有办法像在文档中那样编写文本常量?
最佳答案
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
.
关于string - Haskell 中的 Data.Text 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58039818/