nix-playgraound/notes/015-haskell-parser-combinators.md

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