Please log in to watch this conference skillscast.
Parser combinator libraries are a popular approach to writing parsers in the functional world. In particular, monadic parser combinators take centre stage. But when looking to design a performant library, monads provide a hard stopper on potential introspective optimisation opportunities. Applicative and selective combinators provide a friendly interface without these pitfalls and selectives in particular allow for many common monadic patterns to still exist non-monadically. In this talk, you will explore the design and high-level implementation of a selective parser combinator library, which aims to achieve high performance by generating a deep embedding, optimising, compiling to a stack machine, and finally staging the internals. This work is a continuation of previous work on the Scala implementation of this library, which has an associated paper "Garnishing Parsec with Parsley" accepted at the Scala Symposium 2018 (https://github.com/J-mie6/Parsley). However, the scope of this talk is largely different to the scope of that paper and is fully focused on the Haskell side of things.
YOU MAY ALSO LIKE:
Parsley: A Staged Selective Parser Combinator Library
Jamie is a PhD Student at Imperial College London, with an interest in functional programming, compilers, and parsers. He is currently working on performant parser combinator libraries in Haskell using staging and compiler engineering principles.