~/talk

Developing DSLs with FP: Exploring 3 Strategies Through Examples

Talkat Functional Conf 2025 · 2025-01-24..01-25· [functional-programming]
slides:none on file

Compares three concrete DSL strategies with Cardano examples: standalone low-level UPLC uses an untyped lambda core whose evaluator (the CEK machine) literally fits on a napkin, making correctness and formalization practical; surface standalone Aen compiles to UPLC but adds heavy adoption cost. Embedded EDSLs like Plutus and Copilot expose AST constructors and leak special syntax, making programs nonstandard. Subset approach implemented as a GHC plugin (PlutusTx/Plin) reuses the compiler core (about 10 core constructors) so code looks like plain Haskell and works well, but plugin support is fragile across GHC versions.

AI-written summary · about

  1. 0:00DSLs and FP introduction
  2. 4:18What is a standalone DSL
  3. 10:22When to use standalone DSLs
  4. 13:31UPLC low-level DSL example
  5. 17:44Standalone DSLs as config
  6. 19:10Aiken surface language
  7. 20:37Embedded DSLs concepts
  8. 25:31Plutus embedded example
  9. 26:53Rebindable syntax
  10. 28:18Flight control DSL
  11. 30:42Subset approach
  12. 31:48Quoted DSLs syntax
  13. 35:21Haskell quoted example
  14. 38:54Plutarch TX subset
  15. 41:00Subset DSL drawbacks
  16. 44:56Summary
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.