正如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?
在另一个问题中,其中一条评论说," [Data.]Text正在成为事实上的文本实现.String由于遗留原因和简单的事情仍然存在,但对于你应该使用的严肃的文本操作Text."
将a转换为a的最简单方法Data.Text是Int什么?read将无法正常工作,因为该read功能总是需要一个String.
我能想到的最好的是:
let fortyTwo = Data.Text.pack "42"
read $ Data.Text.unpack fortyTwo :: Int
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?