Express: applications of dynamically typed Haskell expressions
summary
The express library implements dynamically typed Haskell expressions as a wrapper around Data.Dynamic and adds pretty printing, delayed evaluation, support for variables and expression matching. It deep-encodes values as constructor applications and exposes candidate generation up to size 5 and testing (60 random tests by default). Concrete results: an equation conjecturer finds associativity/append laws in <1s; a counterexample generalizer produces patterned counterexamples; a brute-force synthesizer is implemented in ~66 lines but does not scale; refactoring two tools cuts their code by ~25%.
AI-written summary · about
chapters (10)
- 0:00Introduction
- 1:05What is Express
- 2:08Express library
- 3:10GHCI
- 4:50Heterogeneous lists
- 6:30Encoding variables
- 7:26Contradictory equations
- 13:07Deep encoding
- 14:46Generalizing counter examples
- 18:45Synthesising functions
related talks
21mProduction Haskell Demystified
01h 22mHaskell for Everyday Programmers
01h 02mHaskell for Java Programmers
01h 07mHaskell The Legend of DSLs
46mPainless software development with Haskell
01h 00mCause and Effect(s): Towards a More Programmable Haskell
01h 28mInto the Core Squeezing Haskell into nine Constructors
38mType-level interfaces in Haskell & Rust: pragmatic type-level programming
