repa-flow-4.0.0.2: Data-parallel data flows.

Safe HaskellNone
LanguageHaskell98

Data.Repa.Flow.Default.IO

Contents

Description

Read and write files.

The functions in this module are wrappers for the ones in Data.Repa.Flow.Default.SizedIO that use a default chunk size of 64kBytes and just call error if the source file appears corruped.

Synopsis

Documentation

defaultChunkSize :: Integer Source

The default chunk size of 64kBytes.

Buckets

Sourcing

sourceCSV :: BulkI l Bucket => Array l Bucket -> IO (Sources N (Array N (Array F Char))) Source

Read a file containing Comma-Separated-Values.

sourceTSV :: BulkI l Bucket => Array l Bucket -> IO (Sources N (Array N (Array F Char))) Source

Read a file containing Tab-Separated-Values.

sourceRecords Source

Arguments

:: BulkI l Bucket 
=> (Word8 -> Bool)

Detect the end of a record.

-> Array l Bucket

Buckets.

-> IO (Sources N (Array F Word8)) 

Read complete records of data form a file, into chunks of the given length. We read as many complete records as will fit into each chunk.

The records are separated by a special terminating character, which the given predicate detects. After reading a chunk of data we seek the file to just after the last complete record that was read, so we can continue to read more complete records next time.

If we cannot fit at least one complete record in the chunk then perform the given failure action. Limiting the chunk length guards against the case where a large input file is malformed, as we won't try to read the whole file into memory.

  • Data is read into foreign memory without copying it through the GHC heap.
  • The provided file handle must support seeking, else you'll get an exception.
  • Each file is closed the first time the consumer tries to pull a record from the associated stream when no more are available.

sourceLines :: BulkI l Bucket => Array l Bucket -> IO (Sources N (Array F Char)) Source

Read complete lines of data from a text file, using the given chunk length. We read as many complete lines as will fit into each chunk.

  • The trailing new-line characters are discarded.
  • Data is read into foreign memory without copying it through the GHC heap.
  • The provided file handle must support seeking, else you'll get an exception.
  • Each file is closed the first time the consumer tries to pull a line from the associated stream when no more are available.

sourceChars :: BulkI l Bucket => Array l Bucket -> IO (Sources F Char) Source

Read 8-bit ASCII characters from some files, using the given chunk length.

sourceBytes :: BulkI l Bucket => Array l Bucket -> IO (Sources F Word8) Source

Read data from some files, using the given chunk length.

Sinking

sinkChars :: BulkI l Bucket => Array l Bucket -> IO (Sinks F Char) Source

Write 8-bit ASCII characters to some files.

sinkLines Source

Arguments

:: (BulkI l Bucket, BulkI l1 (Array l2 Char), BulkI l2 Char, Unpack (Array l2 Char) t2) 
=> Name l1

Layout of chunks.

-> Name l2

Layout of lines in chunks.

-> Array l Bucket

Buckets

-> IO (Sinks l1 (Array l2 Char)) 

Write vectors of text lines to the given files handles.

  • Data is copied into a new buffer to insert newlines before being written out.

sinkBytes :: BulkI l Bucket => Array l Bucket -> IO (Sinks F Word8) Source

Write bytes to some file.