https://www.youtube.com/watch?v=RcVA8Nj6HEo
[1]https://www.youtube.com/playlist?list=PLi8_XqluS5xc7GL-bgVrxpA2Uww6nK0gV
#lambdacalculus #combinators #animation #representation #church #tromp #turing
Hi @sabine,
I love it! A while ago I demoed side by side an xml (subset) parser directly based on the w3c spec #ABNF in reverse: https://wiki.mro.name/cocoaheads/ragel#:~:text=XML%20Spec
Used #ragel https://en.wikipedia.org/wiki/Ragel
I keep wondering, why there is no converter from ABNF to #angstrom https://opam.ocaml.org/packages/angstrom/ #combinators
(Edit: wiki url anchor)
Stop writing CLI validation. Parse it right the first time.
https://hackers.pub/@hongminhee/2025/stop-writing-cli-validation-parse-it-right-the-first-time

This post introduces Optique, a new library created to address the pervasive problem of repetitive and often messy validation code in CLI tools. The author was motivated by the observation that nearly every CLI tool reinvents the wheel with similar validation patterns for dependent options, mutually exclusive options, and environment-specific requirements. Optique leverages parser combinators and TypeScript's type inference to ensure that CLI arguments are parsed directly into valid configurations, eliminating the need for manual validation. By describing the desired CLI configuration with Optique, TypeScript automatically infers the types and constraints, catching potential bugs at compile time. The author shares their experience of deleting large chunks of validation code and simplifying refactoring tasks. Optique aims to provide a more robust and maintainable approach to CLI argument parsing, potentially saving developers from writing the same validation logic repeatedly.
Optique 0.4.0: Better help, rich docs, and Temporal support
Optique 0.4.0 introduces enhancements to streamline CLI development in TypeScript. This release focuses on improving help text organization through labeled merge groups and a new `group()` combinator, making complex CLIs more user-friendly by organizing options under clear sections. Comprehensive documentation support is added via the `run()` function, allowing brief descriptions, detailed explanations, and footers without altering parser definitions. The update also includes Temporal API support with the `@optique/temporal` package, enabling type-safe parsing for dates, times, and time zones. Improved type inference for `merge()` and `tuple()` combinators enhances type safety, alongside minor breaking changes. These updates aim to make CLI construction more intuitive and maintainable, offering developers greater control over user experience and code structure.
“Embedding MicroHs” by Thomas Mahler
https://thma.github.io/posts/2025-08-30-Embedding-MicroHs.html
Parcom: CL Parser Combinators
https://github.com/fosskers/parcom
#HackerNews #Parcom #CL #Parser #Combinators #HackerNews #Programming #Languages #GitHub
In about an hour, Adám from Dyalog is appearing on today's Tacit Talk, a podcast about programming languages, combinators, algorithms, and more. Watch live at 14:00 UTC at https://www.youtube.com/watch?v=6LrQithKj8w
#Dyalog #APL #Programming #Combinators #Algorithms #FunctionalProgramming #Podcast #LiveStream #TechTalk #Coding #TechPodcast
Context free grammars (CFG) are better than parsing expression grammars (PEG), because CFGs represent how we think.
Parser combinators are similar to PEGs, so they are worse than CFGs, too.
So, don't use Rust libraries nom, combine. Use lalrpop.
Don't use Haskell libraries parsec, gigaparsec, attoparsec, megaparsec, trifecta. Use Earley, happy.
See more detailed story in my new article https://safinaskar.writeas.com/this-is-why-you-should-never-use-parser-combinators-and-peg .
The story also includes some cases, where PEG and parser combinators may still be useful. Also, the article gives links to my Haskell parsing libraries.
#haskell #rust #parsing #parse #cfg #peg #combinators #parsercombinators #parsingcombinators #nom #combine #lalrpop #parsec #earley #happy
Given my difficulties to wrap my head around the Y combinator, I expected it to come with a higher run time penalty. 🙂