1.2 KiB
1.2 KiB
Haskell Parser Combinators
This note covers 12-haskell-parser-combinators/, which parses a tiny deploy-command language with Megaparsec.
1. Why Parser Combinators Matter
Parser combinators let you build a parser out of smaller parsers:
- parse one token,
- combine it with another parser,
- choose between alternatives, and
- repeat parts that can appear many times.
That makes them a very Haskell-shaped tool: you write small functions, compose them, and end up with a parser for a whole language.
2. What This Example Shows
The example defines parsers for:
- the environment,
- identifiers,
- tag lists, and
- the full deploy command.
The full parser then composes those pieces with sequencing, choice, many, and sepBy1.
That is the main intermediate idea: treat a parser as a reusable value, not a one-off block of string handling code.
3. Commands to Try
cd 12-haskell-parser-combinators
nix develop
cabal run
cabal run -- deploy api production tags=blue,stable
cabal test
nix build
./result/bin/mini-parser deploy api production tags=blue,stable
nix run . -- deploy api production tags=blue,stable
nix flake check