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:
- Safe and Reproducible Deployments with Immutable Infrastructure (in Online Event on 28th May 2020)
- The Secrets of the GHC Garbage Collector (in Online Event on 11th June 2020)
- Creating smaller, faster, production-worthy mobile machine learning models for Android (SkillsCast recorded in October 2019)
- Lightning Talk: Making and Testing Code Generators in Haskell (SkillsCast recorded in October 2019)
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.