正如Nikita Volkov在他的问题中提到的Data.Text vs String我也想知道为什么我必须处理不同的String实现type String = [Char]和Data.Texthaskell.在我的代码中,我经常使用pack和unpack函数.
我的问题:有没有办法在两种字符串类型之间进行自动转换,这样我就可以避免写入pack而且unpack经常这样?
在其他编程语言(如Python或JavaScript)中,例如,如果需要,可以在整数和浮点数之间进行自动转换.我可以在haskell中达到类似的效果吗?我知道,提到的语言是弱类型的,但我听说C++有类似的功能.
注意:我已经知道语言扩展{-# LANGUAGE OverloadedStrings #-}.但据我所知,这种语言扩展只适用于定义为的字符串"...".我希望自动转换字符串,这是我从其他函数获得的,或者我在函数定义中作为参数.
扩展问题: Haskell.Text或Bytestring也涵盖了Data.Text和之间的区别Data.ByteString.有没有办法在三个字符串之间进行自动转换String,Data.Text并且Data.ByteString?
在 Haskell 的原生字符串函数上导入 Data.Text 有什么好处?
ghci$> drop 3 "abcdefg"
> "defg"
ghci$> import qualified Data.Text as T
> T.drop 3 $ T.pack "abcdefg"
> "defg"
Run Code Online (Sandbox Code Playgroud)
等等。 Data.Text 提供的许多其他方法(如果不是全部)由标准库提供。此外,要将字符串与 Data.Text 一起使用,我必须将字符串打包/解压缩为文本。为什么我要使用 Data.Text?