Haskell隐式字符串多态性



我怎样才能减少编写需要在不同字符串表示之间转换的脚本的工作量?

例如,如何创建一个多态设置,其中getContentsputStrLn不需要额外的"粘合代码"来使用下面的函数(源自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

我会检查字符串转换包。

有一个完全多态的convertString函数来转换和从任何主要的字符串类型。此外,to...from...功能的多态性较少。

bs :: ByteString
bs = ...
txt :: Text
txt = ...
putStrLn $ convertString bs <> convertString txt

最新更新