Changes between Initial Version and Version 1 of Proposals/attoparsec

01/23/13 10:26:26 (18 months ago)
gregorycollins (IP: 2620:0:105f:4:be30:5bff:fee0:268b)



  • Proposals/attoparsec

    v1 v1  
     3= Proposal: Add the attoparsec package to the Haskell Platform = 
     5This is a proposal for the 'attoparsec' package to be included in the next major release of the Haskell platform. 
     7Everyone is invited to review this proposal, following the [ standard procedure for proposing and reviewing packages]. 
     9Review comments should be sent to the libraries mailing list before Feb 23, which is the discussion deadline. 
     12= Credits = 
     14Proposal author: Gregory Collins 
     16Package maintainer: Bryan O'Sullivan 
     18The following individuals contributed to the review process: 
     20  * Gregory Collins 
     21  * ... 
     24= Abstract = 
     26The `attoparsec` package is a fast applicative parser combinator library, aimed particularly at dealing efficiently with network protocols and complicated text/binary file formats. It offers backtracking parsers for ByteString and Text. 
     28Documentation and tarball from the hackage page: 
     32Development repo: 
     37= Rationale = 
     39Attoparsec trades away features from more complicated parser libraries like parsec and uuparsinglib (like meaningful error messages and independence over the ground character type) for speed. Compared with parsec, attoparsec is usually several times faster, which makes it appropriate for situations where throughput is paramount, like big-data processing and parsing network protocols. One other killer attoparsec feature is incremental parsing: this allows users to stream bytestring chunks to attoparsec, which responds either with a value or with a resumption continuation. 
     41The attoparsec library is very widely used: according to, it has 180 reverse dependencies on Hackage. 
     44= Introduction to the API = 
     46The API is a fairly "standard" applicative parser: it offers a "Parser a" datatype which is an instance of Functor, Applicative, Alternative, and Monad, and typical combinators like "string" and "takeWhile". 
     48= Design decisions = 
     51= Open issues =