ByteString和Text有标准(纯)映射函数:
map :: (Word8 -> Word8) -> ByteString -> ByteString
map :: (Char -> Char) -> Text -> Text
但我错过了他们的一元/应用同行:
traverse :: (Applicative f) => (Word8 -> f Word8) -> ByteString -> f ByteString
traverse :: (Applicative f) => (Char -> f Char) -> Text -> f Text
(如果我们有traverse
,我们可以定义mapM f = unwrapMonad . traverse (WrapMonad . f)
。)
我试着翻看包裹,试过 Hoogle,但没有找到。我忽略了什么吗?或者是否有它们丢失的原因(比如不可能/容易有效地定义它们)?