HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Setup

0 declarations

To execute the code examples provided in this module in ghci, please run the following commands first.

Example1 expression
:m
Example3 expressions
import qualified Streamly.Data.Fold as Foldimport qualified Streamly.Data.Stream as Streamimport qualified Streamly.Unicode.Stream as Unicode

For APIs that have not been released yet.

Example2 expressions
:set -XMagicHashimport qualified Streamly.Internal.Unicode.Stream as Unicode

Construction (Decoding)

1 declaration

UTF-8 Decoding

valuedecodeUtf8 :: Monad m => Stream m Word8 -> Stream m Char
#

Decode a UTF-8 encoded bytestream to a stream of Unicode characters. Any invalid codepoint encountered is replaced with the unicode replacement character.

valuedecodeUtf8' :: Monad m => Stream m Word8 -> Stream m Char
#

Decode a UTF-8 encoded bytestream to a stream of Unicode characters. The function throws an error if an invalid codepoint is encountered.

Decode a UTF-16 little endian encoded bytestream to a stream of Unicode characters. The function throws an error if an invalid codepoint is encountered.

Unimplemented

Resumable UTF-8 Decoding

UTF-8 Array Stream Decoding

Elimination (Encoding)

0 declarations

Latin1 Encoding

valueencodeLatin1' :: Monad m => Stream m Char -> Stream m Word8
#

Encode a stream of Unicode characters to bytes by mapping each character to a byte in 0-255 range. Throws an error if the input stream contains characters beyond 255.

UTF-8 Encoding

valueencodeUtf8 :: Monad m => Stream m Char -> Stream m Word8
#

Encode a stream of Unicode characters to a UTF-8 encoded bytestream. Any Invalid characters (U+D800-U+D8FF) in the input stream are replaced by the Unicode replacement character U+FFFD.

valueencodeUtf8' :: Monad m => Stream m Char -> Stream m Word8
#

Encode a stream of Unicode characters to a UTF-8 encoded bytestream. When any invalid character (U+D800-U+D8FF) is encountered in the input stream the function errors out.

valueencodeUtf8_ :: Monad m => Stream m Char -> Stream m Word8
#

Encode a stream of Unicode characters to a UTF-8 encoded bytestream. Any Invalid characters (U+D800-U+D8FF) in the input stream are dropped.

Transformation

5 declarations
valuelines :: Monad m => Fold m Char b -> Stream m Char -> Stream m b
#

Fold each line of the stream using the supplied Fold and stream the result.

Example1 expression
Stream.fold Fold.toList $ Unicode.lines Fold.toList (Stream.fromList "lines\nthis\nstring\n\n\n")["lines","this","string","",""]
lines = Stream.splitOnSuffix (== '\n')

Pre-release

valuewords :: Monad m => Fold m Char b -> Stream m Char -> Stream m b
#

Fold each word of the stream using the supplied Fold and stream the result.

Example1 expression
Stream.fold Fold.toList $ Unicode.words Fold.toList (Stream.fromList "fold these     words")["fold","these","words"]
words = Stream.wordsBy isSpace

Pre-release

valueunlines :: MonadIO m => Unfold m a Char -> Stream m a -> Stream m Char
#

Unfold a stream to character streams using the supplied Unfold and concat the results suffixing a newline character \n to each stream.

unlines = Stream.interposeSuffix 'n'
unlines = Stream.intercalateSuffix Unfold.fromList "n"

Pre-release

valueunwords :: MonadIO m => Unfold m a Char -> Stream m a -> Stream m Char
#

Unfold the elements of a stream to character streams using the supplied Unfold and concat the results with a whitespace character infixed between the streams.

unwords = Stream.interpose ' '
unwords = Stream.intercalate Unfold.fromList " "

Pre-release

StreamD UTF8 Encoding / Decoding transformations.

8 declarations

Decoding String Literals

1 declaration
valuefromStr# :: MonadIO m => Addr# -> Stream m Char
#

Read UTF-8 encoded bytes as chars from an Addr# until a 0 byte is encountered, the 0 byte is not included in the stream.

Unsafe: The caller is responsible for safe addressing.

Note that this is completely safe when reading from Haskell string literals because they are guaranteed to be NULL terminated:

Example1 expression
Stream.fold Fold.toList (Unicode.fromStr# "Haskell"#)"Haskell"

Deprecations

3 declarations