RIO.ByteString.split работает не так, как задокументировано

#haskell #rio

#haskell #rio

Вопрос:

Пробуем пример из разделенных документов:

 $ stack ghci
...
Prelude> :set -XOverloadedStrings
Prelude> import qualified RIO.ByteString as B
Prelude B> B.split 'a' "aXaXaXa"

<interactive>:3:9: error:
    • Couldn't match expected typeGHC.Word.Word8
                  with actual typeCharIn the first argument ofB.split’, namely ‘'a'’
      In the expression: B.split 'a' "aXaXaXa"
      In an equation for ‘it’: it = B.split 'a' "aXaXaXa"
  

Чего мне не хватает?

Ответ №1:

Документация взята из split :: Char -> ByteString -> [ByteString] функции Data.ByteString.Char8 модуля. При этом используются кодовые точки 0-255 как Char для соответствующего байта.

Однако вместо этого вы можете использовать значение в байтах. Например, 'a' имеет значение в байтах 97, поэтому мы можем разделить это с:

 Prelude> :set -XOverloadedStrings
Prelude> import qualified RIO.ByteString as B
Prelude B> B.split 97 "aXaXaXa"
["","X","X","X",""]
  

Комментарии:

1. Отлично, спасибо! Хорошо, так что в основном это опечатка в документах, верно?