What can you do with Elm?

  • Html
  • Http
  • Ports
  • Web Components

Different techniques for extending elm

elm-hot and elm-hot-webpack-loader

Pitfalls and considerations


  • Have a single clear source of truth for codegen
  • Prevent bad states with airtight abstractions, rather than having lots of caveats
  • Make sure public APIs for generated code look nice
  • Use doc comments


  • Elm code that doesn’t look like elm code
  • Tooling doesn’t work then - see Babel ecosystem
  • Violates Open close principle - you’re modifying the language, not extending it

Provide a platform with extensions in mind when you build tools so you don’t require users to hack

When you build a tool, think about the mental model for uses, let that guide you. Avoid leaky abstractions

Be opinionated about the core things, and unopionated about what’s not essential to the tool

  • [elm-spa](