如何减少编写需要在不同字符串表示之间进行转换的脚本的工作量?
例如,如何创建多态设置,其中getContents
和putStrLn
不需要额外的"粘合代码"使用下面的函数(源自Network.HTTP.Types
)?
pathElementsFromUri :: B.ByteString -> [T.Text]
如何利用区域设置完全避免I / O转换?
完成示例,其中需要正确的命名空间来执行简单的操作。 Haskell的新手不会在第一次尝试时得到这样的东西。
import Network.HTTP.Types
import Data.Foldable
import qualified Data.ByteString as B
import qualified Data.Text.IO as T
main = B.getContents >>= printout
printout = traverse_ T.putStrLn . pathElements
pathElements = fst . decodePath . extractPath
答案 0 :(得分:5)
我会查看string-conversions包。
有一个完全多态的convertString
函数可以转换为任何主要的字符串类型。此外,多态to...
和from...
功能较少。
E.g。
bs :: ByteString
bs = ...
txt :: Text
txt = ...
putStrLn $ convertString bs <> convertString txt