Comments (4)
There is a well-maintained for of Parsec — https://hackage.haskell.org/package/megaparsec — that has support for ByteString
and even custom input stream types.
from parsec.
Thanks for your reply. So basically if I need some extra functionality I should use a different package... Is there any reason why those are different packages while they are meant to do the same thing?
from parsec.
No technical reason, just a communication issue (I guess merging these changes upstream was difficult). I think if @mrkkrp got commit bits, he would not be opposed to having all these changes directly in parsec
.
from parsec.
It's not really a communication issue; it's more like that parsec
is more conservative at this point given it has to carry a lot of weight in the ecosystem, and any misstep may have significant cost; while megaparsec
is free to explore the design space and can move faster.
I intend to improve parsec
by stealing ideas from megaparsec/trifecta/parsers, while avoiding bigger changes that would completely break API compatibility. However, we do have a diversity of parsers, and there is not going to be "the one" parser to rule them all. Parsec just happens to be one of the oldest ones and tries to keep its dependency footprint light enough to be consumable by lib:Cabal
. Personally, I often use and recommend megaparsec
or attoparsec
for projects for which Parsec is not a good fit; or you can just go for https://hackage.haskell.org/package/parsers which abstracts over parser libraries.
Long story short: PRs which add (popular) functionality to Parsec are quite welcome. :-)
from parsec.
Related Issues (20)
- (>>=) leaks memory
- Documentation regarding updatePosChar does not match the function's behaviour
- tokenise comments
- add a parameter to makeTokenParser to specify options for treating space by lexeme
- `updatePosChar` does not increment line number like doccumentation says
- GHC 9.2.1 release? HOT 2
- Which unfoldM is meant in "unfoldM uncons gives the [t] corresponding to the stream"?
- Compatibility with mtl-2.3 HOT 2
- string function not working correctly with (<|>) when the head of the strings are the same but their tails are not HOT 2
- Link in readme broken HOT 1
- How to handle include?
- Parsec crashes HOT 2
- cabal build -c 'mtl == 2.2.1' fails because of Safe Haskell HOT 7
- Generate syntax highlighting files HOT 1
- Parameterized enclosing for char and string literals HOT 1
- The recent fix of the `(>>=)` memory leak seems to cause an enormous performance degradation. HOT 22
- Track consumed token count in ParserState (and ParseError)
- Haddock combinator 'many' is applied to a parser that accepts an empty string. HOT 5
- End of Line Parser HOT 2
- `anyToken` breaks source position state HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from parsec.